进制的学习笔记
283746:十进制,以10为底的n次幂计算权值
2*100000+ //100000称为权值
8*10000+
3*1000+
7*100+
4*10+
6
权值 = 10为底的n次幂
十六进制,是以16为底的n次幂计算权值,逢16进1
二进制,是以2为底的n次幂计算权值,逢2进1
0x2315 (十六进制 以0x开头的)
2*16^3+
3*16^2+
1*16^1+
5*16^0 = 8981
01011101 (二进制 以0b开头)
0*2^7+
1*2^6+
0*2^5+
1*2^4+
1*2^3+
1*2^2+
0*2^1+
1*2^0 = 93
十进制 二进制 十六进制
0 0000 0
1 0001 1
2 0010 2
3 0011 3
4 0100 4
5 0101 5
6 0110 6
7 0111 7
8 1000 8
9 1001 9
10 1010 A
11 1011 B
12 1100 C
13 1101 D
14 1110 E
5 1111 F
16 1000 0
一个十六进制数正好可以表示4个bit(十六进制数的进率是16,二进制数的进率是2,且16=2^4,说明二进制数连续进位4次,等效于16进制数进1位。)
二个十六进制数正好可以表示1个字节
0xCA --1000 1010
0101 1011 -- 0x5B
0x7CF825ED
0111 1100 1111 1000 0010 0101 1110 1101
0110 1011 0101 0111 --0x6B57
0x9EB2C3D8
1001 1110 1011 0010 1100 0011 1101 1000
0011 0111 1010 1010 1000 1010 0101 0101
0x37AA8A55
数据的二进制保存
计算机中数据全部以二进制补码的形式保存(好处:简单稳定效率高)
正数和负数在二进制中是通过最高位的符号来决定的
符号位如果是0表示这个数是正数
符号位如果是1表示这个数是负数
正数的补码就是原码
0011 1011 --byte型数据,符号位为0表示这个数是正数
0x3B--59
负数的补码就是它的相反数的原码全部取反+1得到(可以先减1然后取反,或者先取反在加1)
1101 1011 --这是一个负数,并且是补码
0010 0100 --0x25 --37
所以结论是 1101 1011 是-37
练习,在计算机中,一下两个数分别是多少?
(1)0110 1011
1*2^6 + 1*2^5 + 1*2^3 + 1*2^1 + 1 = 107
(2)1101 1010
取反 0010 0110 --0x26 -- 38
结果为 -37
1111 1111 是负数,负多少?
-1 变成1111 1110
取反0000 0001 --1
所以1111 1111 是-1
1000 0000 是负数,负多少?
-1 变成1000 0000 --0x80 --128

浙公网安备 33010602011771号