1二进制、八进制、十进制和十六进制的总结
2二进制数
二进制数以2为基数,每个二进制数字称为一个位,可以是0或者1
最左边的位是最高有效位(MSB,Most Significant Bit),最右边的位是最低有效位(LSB,Least significant Bit)
3整数存储的尺寸
所有数据的存储单位都是字节(byte),每个字节含8个位,其他的存储单位还有字(Word,两个字节),双字(dword,含四个字节)和八字节(quadword ,包含8个字节)。
无符号整数的表示范围:
4有符号整数
在基于Intel体系结构的计算机中,最好有效位(MSB)表示数的符号:0是正数,1是负数。
补码表示法:负整数一般用补码表示,一般的算法是对其绝对值数取反加一。还有一种方法是用其对应的基数减去一后再依次减去各个位,最后的结果再加一,也能得到该数对应的补码。
比如16进制的数6A3D,因为其基数减一是15,所以有
6A3D-->(用15依次减去各个位后的值)95C2-->(加一)95C3
又比如八进制的数3456,因为其基数减一是7,所以有
3456-->(用7依次减去各个位后的值)4321-->(加一)4322
又比如2进制的11001010,因为其基数减去1是1,所以有
1100 0101-->(用1依次减去各个位后的值)0011 1010-->(加一)0011 1011
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;检测题;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
题1:解释术语LSB和MSB?
解答:LSB的全名是Least Significant Bit,表示的是最低位。MSB的全称是Most Significant Bit,表示的是最高有效位。此最高有效位是判读数据是否是正负数。
题2:下列无符号二进制整数对应的十进制数是什么?
a. 1111 1000b解答:等于十六进制的F8H,也就是十进制的15*16+8=248
b. 1100 1010b解答: 等于十六进制的CAH,也就是十进制的12*16+10=202
c. 1111 0000b解答:等于十六进制的F0H,也就是十进制的15*16+0=240
d. 0011 0101b解答:等于十六进制的35H,也就是十进制的3*16+5=53
e. 1001 0110b解答:等于十六进制的96H,也就是十进制的9*16+6=150
f. 1100 1100b解答:等于十六进制的CCH,也就是十进制的12*16+12=204
题3:下面每对二进制数的和分别是什么?
a.0000 1111b + 0000 0010b = 0001 0001b
b.1101 0101b + 0110 1011b = 10100 0000b
c.0000 1111b + 0000 1111b = 0001 1110b
d.1010 1111b +1101 1011b = 11000 1010b
e.1001 0111b + 1111 1111b = 11001 0110b
f.0111 0101b + 10101100b = 10010 0001b
题4:下列的数据类型分别包含多少个字节?
a.字(word) b.双字(doubleword) c.八字节(quadword)
解答:因为一个字节包含8个位(byte),所以一个字(word)包含2个字节。双字包含4个字节。八字节(quadword)包含8个字节。
题5:下列的数据类型分别包含多少数据位?
a.字(word) b.双字(doubleword) c.八字节(quadword)
解答:因为一个字节包含8个位(byte),所以一个字(word)包含2个字节16位。双字包含4个字节32位。八字节(quadword)包含8个字节64位。
题6:为表示下列无符号整数,最少需要多少个二进制位?
a.65 b. 256 c.32768 d.4095 e.65534 f.2134657
解答:65等于01000001b,所以可以用7个二进制位。256等于100000000b,所以可以用9个二进制位。32768等于1000000000000000b,所以可以用16个二进制位。4095等于111111111111b,所以可以用12个二进制位。65534等于1111111111111110b,所以可以用16个二进制位。。而2134657等于1000001001001010000001b。所以可以用22位来存储。
题7:下列有符号十进制数对应的16位十六进制数十什么?
a -26 b -452 c -32 d -62
解答:有符号的十进制数转化为十六进制的思路是:1将十进制整数的绝对值转换为十六进制数。2.如果十进制整数位负数,计算前一步得到的十六进制的补码,即用15依次减去各个位后再加一就是其所得的补码。所以我们有:
a:1.-26的绝对值是26,转化为十六进制是001Ah。2.因为-26是负数,所以要把001Ah求补码。所以001Ah-->FFE5h-->FFE6h。
b:1.-452的绝对值是452,转化为十六进制01C4h。2.因为-452是负数,所以要把01C4h求补码。所以01C4h-->FE3BH-->FE3CH
c:1.-32的绝对值是32,转化为十六进制0020h。2.因为-32是负数,所以要把0020h求补码。所以0020h-->FFDFH-->FFE0H
d:1. -62绝对值是 62,转化为十六进制003Eh。2.因为-62是负数,所以要把003Eh求补码。所以003Eh-->FFC1H-->FFC2H
题8:下列16位的十六进制数表示的是有符号整数,请将其转化为十进制数。
A.7CAB B.C123 C.7F9B D.8230
解答:将有符号十六进制数转化为十进制数的思路是:1.如果原十六进制整数是负数,那么求 其补码。否则保持不变。2.将上一步得到的整数转化为十进制数,如果原来的十六进制数为负数,那么就在十进制数的开头加一负号。
A:1.7CABH是正数,不需要求补码。2.7CAB转化为十进制数是31915
B:1.C123 H是负数,需要求补码,是C123H-->3EDCH-->3EDDH。2.3EDCH 转化为十进制数是-16093
C:1.7F9BH是正数,不需要求补码。2.7F9B转化为十进制数是32667
D:1.8230H是负数,需要求补码是8230H-->7DCFH-->7DD0H。2.7DCFH转化为十进制数是-32208
题9:下列有符号二进制数对应的十进制数是什么?
A.1011 0101B B.0010 1010B C.1111 0000B D.1000 0000B E.1100 1100B F.1011 0111B
解答:将有符号二进制数转成对应的十进制数的思路是:1.如果最高位是1,说明数字是用补码表示的,那必须对其求补得到对应的正数,然后就可以把它当做无符号二进制数对待,转换为十进制数。2.如果最高位是0,说明数字是正数,直接转换为十进制数。
A.1011 0101B 1.是负数,求补码1011 0101B-->0100 1010B-->0100 1011B 2.把0100 1011B 转换为十进制数75
B.0010 1010B 1.是正数,直接转换为十进制数 42
C.1111 0000B 1.是负数,求补码1111 0000B-->0000 1111B-->0001 0000B 2.把0001 0000B 转换为十进制数16
D.1000 0000B 1.是负数,求补码1000 0000B-->0111 1111B-->1000 0000B 2.把1000 0000B 转换为十进制数128
E.1100 1100B 1.是负数,求补码1100 1100B-->0011 0011B-->0011 0100B 2.把0011 0100B转换为十进制数52
F.1011 0111B 1.是负数,求补码1011 0111B-->0100 1000B-->0100 1001B 2.把0100 1001B转换为十进制数 73
题10:下列有符号十进制数对应的8位二进制数是多少?
A.-5 B.-36 C.-16 D.-26
解答:把有符号的十进制数转换对应的二进制数的思路:将十进制数数的绝对值转换为二进制数。如果原来的十进制数是负数,则计算第一步所得的二进制数的补码。
A.-5 1.其绝对值是5 对应的二进制数是0000 0101B 2.因为-5是负数,所以要求0000 0101B的补码-->1111 1010B-->1111 1011B
B.-36 1.其绝对值是36 对应的二进制数是0010 0100b 2.因为-5是负数,所以要求0010 0100b 的补码-->1101 1011B-->1101 1100B
C.-16 1.其绝对值是16 对应的二进制数是0001 0000b 2.因为-16是负数,所以要求0001 0000b 的补码-->1110 1111B-->1111 0000B
D.-26 1.其绝对值是26 对应的二进制数是0001 1010b 2.因为-26是负数,所以要求0001 1010b的补码-->1110 0101B-->1110 0110B
题11:为什么要发明Unicode?
解答:因为ANSI只能处理小于256个字符的代码,即为了处理那些包含多于256个字符代码的国际字符集。
题12:用256为无符号整数能够表示的最大值是多少?
解答:其能表示的范围是0~2^256-1。所以其能表示的最大值是2^256-1 。
题13:用256为有符号整数能表示的最大数值是多少?
解答:其能表示的范围是-2^255~2^255-1。所以能表示的最大数值是-2^255。