• 技术文章 >Python技术 >Python基础教程

    python中的进制转换和原码,反码,补码

    爱喝马黛茶的安东尼爱喝马黛茶的安东尼2019-06-29 17:16:28原创4533

    python中的进制转换和原码,反码,补码

    计算机文件大小单位

    b = bit 位(比特)

    B = Byte 字节

    1Byte = 8 bit #一个字节等于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中标志:无

    十六进制:有16个数字组成,有0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f(进制字母大小写都可以,分别代表10,11,12,13,14,15) python中标志:0x

    python中的进制转换:

    其他进制转换为十进制:int(相应进制)

    其他进制转换为二进制:bin(相应进制)

    其他进制转换为八进制:oct(相应进制)

    其他进制转换为十六进制:hex(相应进制)

    二进制 转化成 十进制:

    例: 0b10100101

    运算:1* 2^0 + 0* 2^1 + 1* 2^2 + 0* 2^3 + 0* 2^4 + 1* 2^5 + 0* 2^6 + 1* 2^7=

    1 + 0 + 4 + 0 + 0 + 32 + 0 + 128 = 165

    八进制 转化成 十进制:

    例: 0o127

    运算:7*8^0 + 2*8^1 + 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

    专题推荐:python 进制转换原码 反码 补码
    上一篇:Python中的匿名函数是什么 下一篇:Python如何从文件中读取数据

    相关文章推荐

    • Python绘图时如何显示中文• Python中的匿名函数是什么

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网