学习地址:http://c.biancheng.net/view/3299.html
一.二进制与十进制相互转换
1.无符号二进制整数到十进制数的转换
dec = ( Dn-1 x 2n-1 ) + ( Dn-2 x 2n-2 ) +…+ ( D1 x 21 )+ ( D0 x 20 )
D 表示一个二进制数字。比如,二进制数 00001001 就等于 9。计算该值时,剔除了数字等于 0 的位:( 1 X 23 ) + ( 1 X 20 ) = 9
/*类推,10001001---->1*2^7+1*2^3+1*2^0 = 137/ 整数从右到左,小数点后从左至右
2.十进制整数到二进制数的转换
不断将这个整数除以 2,并将每个余数记录为一个二进制数字,最后逆序排列得到。
例如137: 137/2 = 68 ... 1;
68/2 = 34 ... 0 ;
34/2 = 17 ... 0;
17/2 = 8 ... 1;
8/2 = 4 ... 0 ;
4/2 = 2 ... 0;
2/2 = 1... 0;
1/2 = 0 ... 1; 逆序,由下至上,10001001
二. 二进制加法
0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 10
位对位相加
有些情况下,最高有效位会产生进位。这时,预留存储区的大小就显得很重要。比如,如果计算 1111 1111 加 0000 0001,就会在最高有效位之外产生一个 1,而和数的低 8 位则为全 0。
如果和数的存储大小最少有 9 位,那么就可以将和数表示为 1 0000 0000。但是,如果和数只能保存 8 位,那么它就等于 0000 0000,也就是计算结果的低 8 位。
三.字节
在 x86 计算机中,所有数据存储的基本单位都是字节(byte),一个字节有 8 位。其他的存储单位还有字(word)(2 个字节),双字(doubleword)(4 个字节)和四字(quadword)(8 个字节)。
四.十六进制
十六进制整数中的 1 个数字就表示了 4 位二进制位,两个十六进制数字就能表示一个字节(1个字节有8位二进制位,十六进制中的1个数字表示4位二进制位,故两个十六进制数能表示一个字节)
无符号十六进制数到十进制的转换:
任意n位数的十六进制整数:
dec = (Dn-1 X 16n-1)+ (Dn-2 x 16n-2)+…+ (D1 X 161)+ (D0 x 160)
无符号十进制数到十六进制的转换:
把这个十进制数反复除以16,每次取余数作为一个十六进制数字,最后逆序排列。