C++程序归类复习———进制转换以及浮点数的表示

整形常量的类型

一个整型常量可以用3种不同的方式表示:

(1)十进制整数。十进制都是以0-9这九个数字组成,不能以0开头。如l314,-432,0等。在一个整常量后面加一个字母l或L,则认为是long int型常量。例如123L,421L,OL等,这往往用于函数调用中。如果函数的形参为long int,则要求实参也为long int型,此时用123 作实参不行,而要用123L 作实参。

(2)八进制整数。 由0-7数字组成,在常数的开头加一个数字0 就表示这是以八进制数形式表示的常数。如020表示这是八进制数20,它相当于十进制数16。

(3)十六进制整数。由0-9和A-F组成(A代表十进制中的10,以此类推,F代表15)。在常数的开头加一个数字0和一个英文字母X(或x),就表示这是以十六进制数形式表示的常数。如0X20表示这是十六进制数20,它相当于十进制数32。

类型转换

  • 十进制整数转换为非十进制整数

方法:除基取余法( 除基取余,先余为低(位),后余为高(位))

例:55L转为 110111(二进制)

除基取余即用被转换的数除以要转为的进制数,这里是转为二进制,所以用55去除以2,记录每次除完后得到的余数。

        55%2为1,实则商为27余数为1,继续用27除以2,记录余数,直至最后的商为0结束。

        55%2=1    27%2=1    13%2=1    6%2=0     3%2=1    1%2=1(商为0,结束)

“ 先余为低(位),后余为高(位)”即先得到的余数排在后位,也就是把得到的余数倒着来排,最后得到 110111。

  • 十进制小数转换为非十进制小数

方法: 乘基取整法 ( 乘基取整,先整为高(位),后整为低(位))

例:0.625L

乘基取整即用被转换的数乘以要转为的进制数,这里转为二进制,所以用0.625乘以2,记录每次乘基得到的整数部位,然后用得到的小数部位继续乘基,直到小数部位为0结束。

0.625乘以2得到1.25,记录整数部位1,以此类推,直到小数部位为0结束。

             0.625 * 2 = 1.25    0.25 * 2 = 0.5    0.5 * 2 = 1.0

所以最终结果为 101,注意“ 先整为高,后整为低 ”这里与整数部位相反,先得到的为高位,排在前面。

  • 非十进制整数转换为十进制整数

规律:相应位置上的数,乘以进制的n-1次幂之后,累加即可。

例:二进制整数 101转为十进制

              1 * 2²  +  0 * 2¹  +  1 * 2º=5   所以二进制101转换为十进制为5。
  • 二进制整数转换为八进制整数

以小数点为界,将整数部分自右向左小数部位自左向右分别按每三位为一组(不足三位用0补足),然后将各个三位二进制数转换为对应的八进制数。

例:二进制数:10111001010.1011011

       首先按原则划分为    010   111   001   010.101   101   100
                                         
       然后对位转换         2     7     1     2 . 5     5     4
  • 二进制整数转换为十六进制整数

以小数点为界,将整数部分自右向左小数部位自左向右分别按每四位为一组(不足四位用0补足),然后将各个四位二进制数转换为对应的十六进制数。

例:二进制数: 10111001010.1011011

        首先按原则划分为    0101   1100   1010 . 1011   0110

        然后对位转换         5      C      A   .  B      6
  • 八进制整数转换为二进制整数

每一位八进制数转换为对应的三位二进制数,不足的可以补0。

例:0357(八进制数357)

               3转为011      5转为101      7转为111       即011101111
  • 十六进制整数转换为二进制整数

与八进制一样,每一位十六进制整数转换为对应的四位二进制数,不足的可以补0。

例:A6F

                A 转为1010       6 转为0110       F 转为1111       即101001101111
  • 八进制与十六进制的相互转换

这两者之间的转换可以借助十进制或者二进制完成,可以先将八进制转换成十进制或二进制,再转换成十六进制。通过间接转换来实现。

浮点数的表示方式

一个浮点数可以用两种不同的方式表示:

(1)十进制小数形式。如 21.456,-7.98 等。它一般由整数部分和小数部分组成,可以省略其中之一 ( 如 78.或 .06, .0),但不能二者皆省略。C++编译系统把用这种形式表示的浮点数一律按双精度常量处理,在内存中占8个字节。如果在实数的数字之后加字母F或f,表示此数为单精度浮点数,如1234F,-43f,占4个字节。如果加字母 L 或1,表示此数为长双精度数 ( long double ),在GCC中占12个字节,在Visual C++中占8个字节。

(2)指数形式(即浮点形式)。一个浮点数中可以写成指数形式如3.14159。在程序中表示为 0.314159e1,3.14159e0,31.4159e-1,314.159e-2,用字母e表示其后的数是以10为底的幂,如e12表示10的12次幂。

猜你喜欢

转载自blog.csdn.net/Terminal_ve/article/details/126131342