二进制和十六进制说明
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二进制和十六进制说明
二进制数
计算机从最底层来看,只不过是电子开关的集合而已。而数字和字符是由这些开关的状态来表示的。由于一个开关仅有两种状态——“开”或者“关”,所以它使用二进制(Binary),或者说基数为2的计数系统(词根bi表示2)。一个基数为2的系统仅仅有两个数位:0和1。计算机通常将这两个数位集合成8个位值,即一个字节(Byte)或八位组字节(Octet)。这8个位值是:
27 26 25 24 23 22 21 20
位值这样计算:
20 = 1
21 = 1×2 = 2
22 = 2×2 = 4
23 = 4×2 = 8
24 = 8×2 = 16
25 = 16×2 = 32
26 = 32×2 = 64
27 = 64×2 = 128
所以一个二进制八位组的位值:
128 、64 、32 、16 、8 、4 、2 、1
因此,二进制八位组10010111可以这样理解:
1×128 = 128
0×64 = 0
0×32 = 0
1×16 = 16
0×8 = 0
1×4 = 4
1×2 = 2
1×1 = 1
或者:128 + 16 + 4 + 2 + 1 = 151
对于二进制数,因为每一个位值要么就是该值本身,要么就没有,所以比较简单。另外一个例子:11101001 = 128 + 64 + 32 + 8 + 1 = 233。就是说,将二进制转换为十进制仅仅是一个将位值相加的过程,将十进制转换为二进制仅仅是将位值相减的过程。例如,要将十进制数178转为二进制,首先把178减去最高的位值:
1、178大于128,所以我们就知道在该位值上有一个1:
178 – 128 = 50。
2、50比64小,该位值上有一个0。
3、50比32大,所以该位值上有一个1:
50 – 32 = 18。
4、18比16大,该位值上有一个1:
18 – 16 = 2。
5、2比8小,该位值上有一个0。
6、2比4小,该位值上有一个0。
7、2等于2,该位值上有一个1:
2 – 2 = 0。
8、0小于1,该位值上有一个0。
把这些步骤的结果综合起来,用二进制表示178是:10110010。
另外一个例子可能会有帮助。给出110:
1、110比128小,所以在该位值上有一个0。
2、110比64大,所以在该位值上有一个1:
110 – 64 = 46。
3、46比32大,所以在该位值上有一个1:
46 – 32 = 14。
4、14比16小,所以在该位值上有一个0。
5、14比8大,所以在该位值上有一个1:
14 – 8 = 6。
6、6比4大,所以在该位值上有一个1:
6 – 4 = 2。
7、第2个位值上有一个1:
2 – 2 = 0。
8、0比1小,所以在该位值上有一个0。
所以,110用二进制表示就是:01101110。
十六进制数
写一个二进制八位组并不有趣。对于经常要使用这些数字的人来说,受欢迎的是更简洁的表示法。一个可能的表示法是为每一个可能
的八位组分配一个单独的字符。但是,8位有28= 256种不同的组合,所以,用单独的字符表示所有八位组需要256个数位,或者说一个基数为256的计数系统。
将一个八位组看作是两个各4位的组合或许会更简单一些。例如,11010011可以看作是1101和0011。对4个位来说,有24 = 16种不同的组合,所以有基数16,或者说十六进制(Hexadecimal)计数系统,一个八位组可以用两位来表示(词根hex的意思是“six”,deci 的意思是“ten”)。
因为十六进制和十进制的前10个数字是一样的,所以我们有意在一个十六进制数前面加0x,或者在后面加一个h,以便和十进制数区分开。例如,十六进制数9应该写成0x9或者9h。
刚才学过二进制的表示法,很容易写出一个4位二进制数的十进制表达形式。同样也很容易将一个十进制数转为十六进制。于是,我们可以很容易地通过3个步骤将一个二进制八位组转为十六进制:
1、将八位组分成2个4位的二进制数。
2、将每个4位二进制数转为十进制。
3、把每个十进制数用十六进制来表示。
例如:把11010011转为十六进制:
1、11010011变成1101和0011。
2、1101 = 8 + 4 + 1 = 13,0011 = 2 + 1 = 3。
3、13 = 0xD,3 = 0x3。
所以,11010011用十六进制表示就是0xD3。
把十六进制转为二进制是上述3步的简单逆序。例如,把0x7B 转为二进制:
1、0x7 = 7,0xB = 11。
2、7 = 0111,11 = 1011。
3、把2个4位二进制数写在一起就是0x7B = 01111011,十进制为123。