什么是原码、反码和补码?

什么是原码、反码、补码?

计算机中的符号数有三种表示方法,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位,三种表示方法各不相同。

原码:

在数值前直接加一符号位的表示法。
例如-7的原码是10000111

反码:

正数的反码与其原码相同;
负数的反码是对其原码逐位取反,但符号位除外。
例如-7的反码是11111000

补码:

正数和+0的补码是其原码,负数则先计算其反码,然后反码加上1,得到补码

##########################分界线##################################

为什么要提出补码呢?

我查阅了一些材料,得到如下总结:
最原先最简单的是原码,但是因为原码存在一个运算的问题:

十进制原 码
10000 0001
-11000 0001
加法结果1000 0001
十进制结果-2

这样最基础的运算如果按照计算机逻辑则会出错,即

原码是有符号数的最简单的编码方式,便于输入输出,但作为代码加减运算时较为复杂,故计算机一般不采用这种编码方式存储符号数。

于是提出了反码,但是反码出现了另一个问题:
计算结果会出现1000 0000(-0)这样的存在,于是会出现二进制与十进制的互换不再是一一对应的关系这样的问题,增加计算难度,故也被抛弃。
随后提出了基于反码的-0问题而诞生的补码,专门用来解决-0的问题。
补码换算为原码的过程中,如果补码是正数或者+0的补码,则其原码就是补码本身;如果补码是负数或者-0的补码,则其原码的计算方法是,先将补码减掉1,得到反码,再将反码取反,得到原码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值