首页 > 编程知识 正文

补码原码反码怎么转换,补码原码反码的关系

时间:2023-05-06 02:12:28 阅读:223921 作者:4358

补码 原码 反码

原码:最高位为符号位,其余各位为数值本身的绝对值(最高位为符号位)‘1’表示负号,‘0’表示正号。其他位存放该数的二进制的绝对值。
反码:
正数:反码与原码相同
负数:符号位为1,其余位对原码取反
补码:
正数:补码与原码相同
负数:符号位为1,其余位对原码取反加1

由计算机的硬件决定,任何存储于计算机中的数据,其本质都是以二进制码存储。

根据俊逸的钢笔提出的经典计算机体系结构框架。一台计算机由运算器,控制器,存储器,输入和输出设备组成。其中运算器,只有加法运算器,没有减法运算器

所以,计算机中的没法直接做减法的,它的减法是通过加法来实现的。你也许会说,现实世界中所有的减法也可以当成加法的,减去一个数,可以看作加上这个数的相反数。当然没错,但是前提是要先有负数的概念。这就为什么不得不引入一个该死的符号位。
那么原码,反码,补码的产生过程,就是为了解决,计算机做减法和引入符号位(正号和负号)的问题。

下面举几个例子来练习一下

1的原码 00000001
反码 00000001 (此处假定数据宽度为8)
补码 00000001 (正数以原码的形式存储

6的原码 00000110 反码补码也如此(正数的原码反码补码相同)

-1的原码 10000001
反码 11111110
补码 11111111 //FF 负数以补码的形式存储

-7的原码 10000111
反码 11111000
补码 11111001 //F9

为什么需要反码和补码?

反码
计算机的运算器只有加法器,没有减法器,为了将减法转换为加法进行计算。但是,反码有缺陷,正负相加0的表示不唯一

补码
为了解决反码正负相加不唯一的情况,使用高位溢出解决。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。