当前位置: 首页 > 图灵资讯 > 行业资讯> python中的进制转换和原码,反码,补码

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

发布时间:2025-10-31 16:18:16

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

计算机文件大小单位

b = bit 位(比特)

B = Byte 字节

1Byte = 8 bit #字节等于8位 可以简写成 1B = 8b

1KB = 1024B

1MB = 1024KB

1GB = 1024MB

1TB = 1024GB

1PB = 1024TB

1EB = 1024PB

进制分类

二进制:由两个数字组成,有0 和 1 python中的标志:0b

八进制:由0、1、2、3、4、5、7组成 python中标记:0oython

十进制:由0、1、2、3、4、5、6、8、9组成的10个数字 python标志:无

十六进制:由0、1、2、3、4、5、6、7、9组成的16个数字a,b,c,d,e,f(可分别代表10、11、12、13、14、15) python标志:0xthon

python中的进制转换:

其它进制转化为十进制:int(对应进制)

其它进制转化为二进制:bin(对应进制)

其它进制转化为八进制:oct(对应进制)

其它进制转化为16进制: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 万万万万万万万(计算机存储在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中的进制转换和原码,反码,补码

2025-10-31
Python如何从文件中读取数据

Python如何从文件中读取数据

2025-10-31
Python sorted函数及用法

Python sorted函数及用法

2025-10-30
Python如何用json模块存储数据

Python如何用json模块存储数据

2025-10-30
Python如何传递任意数量的实参

Python如何传递任意数量的实参

2025-10-30
Python中的返回值是什么

Python中的返回值是什么

2025-10-30