python二进制反码,python十进制转二进制补码

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: