大多数计算机使用8位的块,或者字节(byte),作为最小的可寻址的内存单位,而不是访问内存中单独的位。那么最基础的位模式的二进制与常见的十进制(Decimal),十六进制(Hexadecimal)*之间的转换总结如下。
二进制与十进制转换
二进制转换为十进制
例如将1001012转换为十进制形式如下:
1001012 = [ ( 1 ) × 25 ] + [ ( 0 ) × 24 ] + [ ( 0 ) × 23 ] + [ ( 1 ) × 22 ] + [ ( 0 ) × 2 1] + [ ( 1 ) × 20 ]
1001012 = [ 1 × 32 ] + [ 0 × 16 ] + [ 0 × 8 ] + [ 1 × 4 ] + [ 0 × 2 ] + [ 1 × 1 ]
1001012 = 3710
十进制转换为二进制
整数部分,把十进制转成二进制一直分解至商数为0。读余数从下读到上,即是二进制的整数部分数字。
例如将5910转换为二进制:
59 ÷ 2 = 29 ... 1
29 ÷ 2 = 14 ... 1
14 ÷ 2 = 7 ... 0
7 ÷ 2 = 3 ... 1
3 ÷ 2 = 1 ... 1
1 ÷ 2 = 0 ... 1
得到5910=1110112
十进制与十六进制转换
十六进制在数学中是一种逢16进1的进位制,一般用数字0到9和字母A到F表示,其中A~F表示10~15。
十进制转十六进制依然采余数定理分解,例如将487710转成十六进制:
4877÷16=304....13(D)
304÷16=19....0
19÷16=1....3
1÷16=0....1
这样就计到487710=130D16
负数和浮点数的表示方法
十进制的负数转换为二进制时,采用补码方法来表示。一个数字的补码就是将该数字作比特反码运算,再将结果加1。在补码系统中,一个负数就是用其对应正数的补码来表示。在8位的补码系统中,可以表示的最大正数为28-1-1 = 127,可以表示最小的负数为 -28-1 = -128。
例如用有符号位8位二进制表示的数字5:
0000 0101 (5)
其最高比特为0,因为此数字为正数。用补码系统表示 -5,首先将5的二进制进行反相运算[1变为0,0变为1]:
1111 1010
目前的数字是数字5的反码,因此需要再加1,才是补码:
1111 1011 (-5)
在计算机中,浮点数的存储格式,一般按照标准 IEEE 754。