python3笔记二:进制转换与原码反码补码
一:学习内容
- 进制:二进制、八进制、十进制、十六进制
- 进制转换
- 原码、反码、补码
二:进制
-
二进制
1.二进制:只有0和1,逢2进1
2.举例:0+0=0、0+1=1、1+1=10
3.过程剖析:二进制11+1=100
1+1=0进1,1+1=0进1,故为100
- 八进制
1.八进制:0到7,逢8进1
2.举例:1+7=10、1+2=3
- 十进制
1.十进制:0到9,逢10进1
- 十六进制
1.说明:0 1 2 3 4 5 6 7 8 9 a b c d e f,逢16进1,a相当于十进制的10,b相当于十进制的11
2.举例:1+f=10,即1+15=16,逢16进1,即10
- 进制转换
1.十进制转二进制:倒除法,余数逆序
10(10)--->1010(2)
2.二进制转十进制:当前的数字,乘以2的位数次方,最后相加,位数从0开始算
1010(2)--->10(10)
1010=0*2^0+1*2^1+0*2^2+1*2^3=2+8=10
3.二进制转八进制:三位一取:从低位开始取,高位不够补0
110101(2)--->65(8)
110为6,因为0*2^0+1*2^1+1*2^2=6
101为5,因为1*2^0+0*2^1+1*2^2=5
4.二进制转十六进制:四位一取:从低位开始取,高位不够补0
10100100(2)--->a4(16)
1010为10即a,因为0*2^0+1*2^1+0*2^2+1*2^3=10
0100为4即4,因为0*2^0+0*2^1+1*2^2+0*2^3=4
5.八进制转二进制:一转三位:八进制的一位相当于二进制的三位,转换时按照十进制转换
65(8)----->110101(2)
6为110,因为0*2^0+1*2^1+1*2^2=6
5为101,因为1*2^0+0*2^1+1*2^2=5
6.十六进制转二进制:一转四位:十六进制的一位相当于二进制的四位,转换时按照十进制转换
a4(16)---->10100100(2)
a为10即1010,因为0*2^0+1*2^1+0*2^2+1*2^3=10
4为0100,因为0*2^0+0*2^1+1*2^2+0*2^3=4
三:原码、反码、补码
1.原码:规定了字节数,写明了符号位,就得到了数据的原码
2.反码:正数的反码是其原码,负数的反码是其原码的符号位不动,其他位取反即0变成1,1变成0
3.补码:正数的补码是其原码,负数的补码是其反码的最低位加1
4.举例
1的原码、反码、补码:
原码:00000000 00000000 00000000 00000001
反码:00000000 00000000 00000000 00000001
补码:00000000 00000000 00000000 00000001
-1的原码、反码、补码:
原码:10000000 00000000 00000000 00000001
反码:11111111 11111111 11111111 11111110
补码:11111111 11111111 11111111 11111111
故1+(-1)的结果为:
1的补码:00000000 00000000 00000000 00000001
-1的补码: 11111111 11111111 11111111 11111111
-1+1补码结果:00000000 00000000 00000000 00000000
该补码的原码为0,即为0
5.说明:
补码最高位为正数时原码即为补码,补码最高位为负数时则符号位不变其他位取反然后最低位加1得原码
计算机中存储和计算都是用补码进行的,但是输出来给我们看是要将补码算成原码给我们看的