python二进制反码,python十进制转二进制补码
python中的进制转换和原码,反码,补码
计算机文件大小单位
B=bit bit(位)
B=字节
1字节=8位#一个字节等于8位,可以缩写为1B=8b。
1KB=1024B
1MB=1024KB
1GB=1024MB
1TB=1024GB
1PB=1024TB
1EB=1024PB
进制分类
二进制:由2个数字组成,带有0和1个python标志:0b。
八进制:由8个数字组成,带有0,1,2,3,4,5,6,7个python标志:0o
十进制:由10个数字组成,包括0、1、2、3、4、5、6、7、8、9。Python中的标志:无
十六进制3360由16个数字组成,包括0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F(十进制字母的大小写都可以,分别代表10、11、12、13、14、15)。在Python中
python中的进制转换:
其他十进制转换为decimal: int(对应的十进制)
其他二进制转换为二进制:bin(对应的二进制)
其他十进制转换成八进制:oct(对应十进制)
其他十进制转换为十六进制:hex(对应十进制)
二进制 转化成 十进制:
示例:b10100101
操作:1 * 2 00 * 2 11 * 2 20 * 2 30 * 2 41 * 2 50 * 2 61 * 2 7=
1 0 4 0 0 32 0 128=165
八进制 转化成 十进制:
示例: 0o127
操作:7 * 8 0 2 * 8 1 * 8 2=7 16 64=87
十六进制 转化成 十进制:
示例:0xff
操作:15 * 16 0 15 * 16 1=255
十进制 转化成 二进制:
426=0b110101010
操作:把426除以2,结果一而再再而三地除以2。
直到最终结果小于2,
每一阶段得到的余数可以从下到上依次拼接。
十进制 转化成 八进制:
426=0o652
操作:把426除以8,结果一次又一次地除以8。
直到最终结果小于8,
每一阶段得到的余数可以从下到上依次拼接。
十进制 转化成 十六进制:
运算过程:把426除以16,得到的结果一次又一次除以16。
直到最终结果小于16,
每个阶段获得的剩余部分可以从下到上拼接。
相关:《Python视频教程》
原码,反码,补码
人们实际看到的数字是原始代码转换后显示的。
原码是补码得到的。
计算机的所有数据都以二进制补码的形式存储在底部。
* * *二进制转换时,需要先把内存中存储的补码取出,变成原码进行转换输出* * *
反码:二进制码0变1,1变0称为反码,反码用于原码补码之间的转换。
补码:用于存储数据,可以在计算机底层实现减法运算,因此被提出(可以表示一个数的正负)。
也就是说默认电脑只能做加法,比如:5 (-3)=5-3。
乘法是通过左右移动实现的。
正数补0,负数补1。
正数:
原码=补码=补码
负数:
逆代码=原始代码的逆(高位除外)
补码=补码加1
反码=补码减1。
原码=逆码反转(高位除外)
我们会发现反演前减1的效果和反演后加1的效果是一样的,和-2-1=-(2 ^ 1)是一样的,所以我们会得到这个规律。
律:
原码 = 补码取反加1
补码 = 原码取反加1
一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 叫符号位正数为0, 负数为1。
比如
正数1在计算机中的存储即为
0 00000000000000000000001
负数1 在计算机中的存储即为
1 00000000000000000000001
一个正数,转换为二进制位就是这个正数的原码。负数的绝对值转换成二进制位然后在高位补1就是这个负数的原码。
正数的反码就是原码,负数的反码等于原码除符号位以外所有的位取反。
正数的补码与原码相同,负数的补码为 其原码除符号位外所有位取反(得到反码了),然后最低位加1。
所以原码,反码,补码正数情况下是一致的,负数情况下是不一致的。
计算机的运算过程实际就是补码相加的一个过程。
比如-2 + 3
-2 的原码为
1 000000000000000000000000010
反码为:
1 111111111111111111111111101
补码为:
1 111111111111111111111111110
3的原码为
0 000000000000000000000000011
反码为:
0 000000000000000000000000011
补码为:
0 000000000000000000000000011
那么二者补码相加结果为
1 111111111111111111111111110
+
0 000000000000000000000000011
=
10 000000000000000000000000001(计算机存储为32位,故前面溢出的1被舍弃,高位为0)
0 000000000000000000000000001
结果为1
再比如-2 + 1
-2 的原码为
1 000000000000000000000000010
反码为:
1 111111111111111111111111101
补码为:
1 111111111111111111111111110
1的原码为
0 000000000000000000000000001
1的反码为:
0 000000000000000000000000001
1的补码为:
0 000000000000000000000000001
二者的补码相加结果为
1 111111111111111111111111110
+
0 000000000000000000000000001
=
1 111111111111111111111111111
得出的补码转化为原码, 最低位减一得到反码,然后除符号位外所有位取反,得到结果
1 000000000000000000000000001
结果为1
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。