文章目录
进制
常用的几种进制:十进制、八进制、十六进制、二进制
- bit(位):二进制中用0/1表示
- byte(字节):1个字节——8 bit(8个位)——2个(十六进制数)
十进制
- 包含符号:0~9
- 用十进制表示一个数字:
按权展开相加:(每一位上的数字与权的乘积和)
权:以基数(这里代表10)为底,数字所处的位置的序号为指数。
(序号以数字的整数部分第一位按0开始算起,左边进一位加1,右边退一位减1)
123.45=(1 * 102)+(2 * 101 )+(3 * 100 )+(4 * 10-1 )+(5 * 10-2 )
二进制
- 包含符号:0,1
- 二进制数字的意义:
1011.1(二进制)
=(1 * 23 )+(0 * 22 )+(1 * 21 )+(1 * 21 )+(1 * 2 -1 )
= 8 + 2 + 1 + 0.5
= 11.5(十进制)
- 二进制的权重:
27 26 25 24 23 22 21 20
128 64 32 16 8 4 2 1
十六进制
- 包含:符号0~9以及abcdef(或ABCDEF)
(abcdef代表数字10、11、12、13、14、15) - 用十六进制表示:
将二进制按四个位起算
在求得的十六进制数前面加0x表示
0011 0100 1010 1111 1011 1110 1101 1010
3 4 a f b e d a
十六进制:0x34afbeda
八进制
- 包含符号:0~7
- 八进制数字的意义:
123(八进制)
= 1 * 82 + 2 * 81 + 3 * 80
=64+16+3
= 83(十进制)
进制间的转换
十进制的转换
十进制 转 二进制
- 1.基数相除,倒序取余
- 2.按二进制的权重凑齐十进制数
3 * 512+7 * 64+4 * 8+5
=512 * 2+512+64 * 4+64 * 2+64+8 * 4+0+0+4+0+1
=11111100101
123.5
=64+32+16+8+0+2+1
=1111011.1
200
=128+64+8
=1000 0000(二进制)+64+8
=1100 1000
30
=32-2
=10 0000(二进制)-1-1
=011111-1
=011110
十进制 转 八进制
- 将其转换成2进制
从右向左,三三分组,左边不够的话补符号位
十进制 转 十六进制
- 1.将其转换成2进制
从右向左,四四分组,左边不够的话补符号位 - 2.基数相除,倒序取余
50(十进制)
=11 0010
=0011 0010(二进制)
=0x32(十六进制)
50(十进制)
=3(2)…………(50除以16=3余2)
=0x32(十六进制)
100(十进制)
=110 0100
=0110 0100(二进制)
=0x64(十六进制)
100(十进制)
=6(4)…………(100除以16=6余4)
=0x64(十六进制)
2006
=1024+512+256+128+64+0+16+0+4+2+0
=111 1101 0110
=0x7D6
2006
=125(6)…………(2006除以16=125余6)
=7(13)…………(125除以16=7余13)
=0x7D6
100
=6(4)…………(100除以16=6余4)
=0x64
12345
=771(9)…………(12345除以16=771余9)
=48(3)…………(771除以16=48余3)
=3(0)…………(48除以16=3余0)
=0x3039
十六进制的转换
十六进制 转 二进制
0x1234(十六进制)
=0001 0010 0011 0100(二进制)
十六进制 转 十进制
- 按权展开求和
0x56(十六进制)
=0101 0110
=1010110(二进制)
=64+16+4+2
=86(十进制)
0x56(十六进制)
=5 * 16 1+ 6 * 16 0
=86(十进制)
123(十六进制)
=1 * 162 + 2 * 161 + 3 * 160
=291(十进制)
二进制的转换
二进制 转 八进制
01 011 010 110 111 110 011 110 111 110 101
=013267636765
二进制 转 十六进制
0101 1010 1101 1111 0011 1101 1111 0101
=0x5adf3df5
二进制 转 十进制
0101 1010
=64+16+8+2
=90
1111 0101
=-1110101
=-0001010+1
=-0001011
=-11
1111 1111
=-1111111
=-000000+1
=-1