补码的运算

在计算机系统中,数据的表示与存储都是以0或1的形式,而表示这些0或1,我们可以将外部数据通过数字电路进行编码,对于有符号数,在计算机系统中有三种编码,即我们通常所了解的编码:原码,反码,补码,而无符号
强烈推介IDEA2021.1.3破解激活,IntelliJ IDEA 注册码,2021.1.3IDEA 激活码  

在计算机系统中,数据的表示与存储都是以0或1的形式,而表示这些0或1,我们可以将外部数据通过数字电路进行编码,对于有符号数,在计算机系统中有三种编码,即我们通常所了解的编码:原码,反码,补码,而无符号数没有原码,反码,补码之分,况且,我觉得在计算机存储系统领域讨论无符号数是没什么意义的

原码:

正数原码 = 0 + 正数绝对值

负数原码 = 1 + 负数绝对值

例如:

+20的原码:00010100

- 20的原码:10010100

反码:

正数反码 = 正数原码

负数反码 = 负数原码符号位的1不变,绝对值部分按位取反

例如:

+20的原码:00010100

+20的反码:00010100

- 20的原码:10010100

- 20的反码:11101011

补码:

正数补码 = 正数反码 = 正数原码

负数补码 = 负数反码符号位的1不变,绝对值部分+1

例如:

+20原码:00010100

+20反码:00010100

+20补码:00010100

- 20原码:10010100

- 20反码:11101011

- 20补码:11101110

 

总结:

求解有符号数[正数与负数]的补码的方法:

对于正数:

补码 = 反码 = 原码

对于负数:

1.补码 = 原码 -----[原码符号位不变,其余位按位取反]-----> 反码 -----[反码符号位不变,末位+1]-----> 补码

2.补码 = 负数的绝对值的原码 -----[按位取反,末位+1]-----> 补码

 

补码的运算原理:

在计算机系统中,CPU仅仅只有加法电路,没有减法电路,采用补码运算的目的,是将减法运算变为加法运算,同时,补码的运算是将符号位也视为数据共同参与数据的运算,其运算结果依然是补码

 

补码的性质:

1.原码与其补码互为补数关系

2.补码再求补码等于该补码的原码

3.补码的正零与负零表示方法相同

本文来源milantgh,由架构君转载发布,观点不代表Java架构师必看的立场,转载请标明来源出处:https://javajgs.com/archives/36711
0

发表评论