原码、反码、补码以及python中各进制间的转换
计算机在存数字的时候,存的是数字的二进制的补码, 计算机内存的最小单位是位:1位只能存储两个状态(0或1)
1、原码:整数数字的二进制形式
十进制的10的原码就是:1010
最高位是符号位,如果正数符号位为0,负数符号位为1
10的原码 00000000 00001010
-10的原码 10000000 00001010
2、反码
正数的反码就是它的原码,负数的反码就是这个数的原码的符号位不变,然后其他位置上的数取反
-10 -> (原码)10000000 00001010 ->(反码)11111111 11110101
3、补码
正数的补码就是它的原码,负数的补码是它的反码加1
-10 -> (反码)11111111 11110101 -> (补码)1111111 11110110
总结:正的反码和补码都是原码;负数的补码是反码加1,反码是原码符号位不变,其他位取反。
为什么计算机存储数据的时候存补码?因为计算机中只有加法器,只能进行加操作。
4、python中各进制间相互转换
python支持通过二进制、八进制、十进制和十六进制的形式来直接表示整数
十进制:直接写的数字的值都是十进制的数 10、20、-10
二进制:需要加前缀 0b 0b11、0b1001
八进制:需要加前缀 0o或者0O 0o12、0O76
十六进制:需要加前缀 0x或者0X 0x14、0OAB
可以通过bin()、oct()、hex()分别将整数转换成二进制、八进制、十六进制。注意这三个函数的返回值是字符串类型
# bin(整数) --> 将括号中的整数,转换成二进制形式
print(bin(10), bin(0o56), bin(0xaf))
# print(type(bin(10)))
# oct(整数) --> 将括号中的整数,转换成八进制形式
print(oct(10), oct(0b110110), oct(0xaf))
# hex(整数) --> 将括号中的整数,转换成十六进制形式
print(hex(10), hex(0b110110), hex(0o56))
网友评论