原码、反码、补码

文章详细介绍了原码、反码和补码的概念,以及它们在计算机中处理正负数加减运算的作用。原码直接表示正负,但无法正确处理负数加减;反码用于负数运算,但有特殊值0的两种表示;补码解决了负数加正数大于0的问题,保证了运算的正确性。
摘要由CSDN通过智能技术生成

1、原码:即十进制数的二进制形式,其中,最左边一位是符号位,0代表正数,1代表负数。

例:0101110          红色的0是符号位表示该数为正数  蓝色的数为数据

       1011010          红色的1是符号位表示该数为负数  蓝色的数为数据

原码中的一个0或者一个1表示一个比特位(bit,正如老婆饼跟老婆没有关系,比特位与比特币也没关系哦),每8个比特位(包括符号位)为一组,称为一个字节(字节是计算机中最小的存储单元),一个字节最大值为01111111(转换为十进制为+127),最小值为11111111(转换为十进制为-127

原码的加减:

(1)正数加减理论结果与实际结果相同

例:0101(十进制为+5)加1    理论结果为+5+1=6 实际结果为0101+1=0110(转十进制为6

(2)负数加减理论结果与实际结果不同

例:1010(十进制为-2)加1     理论结果为-2+1=-1 实际结果为1010+1=1011(转十进制为-3

可以理解为原码的加减是数据所代表的的数字加减再带上符号

那么问题来了,利用原码,可以进行正数的相加减,但没法进行负数的相加减,怎么办呢?这就要运用到反码。

2、反码:正数的反码为其本身,负数的反码变换遵循符号位不变,数值位取反(即0变1,1变0

 例:010101(符号位是0,正数)的反码为010101

        101010(符号位是1,负数)的反码为110101 

通过反码进行负数的运算:先取该负数的补码,再将补码进行加减,得出的结果再取其补码,几位理论值

例:101010(十进制为-10)+1->先取反->110101+1=110110->再取反->101001(十进制为-9)

有一个特殊的数“0”,0的原码与反码有两种表达-> 1.0000 0000(+0的原码) 0000 0000(+0的补码) 2.1000 0000(-0的原码)1111 1111(-0的补码)( 符号位不同,有两种表达)因此在进行运算时经过0的式子中,就有些不同。

那么问题又来了,利用反码,可以进行负数的计算,但如果负数加正数大于0,怎么办呢?,这就要运用到补码。

3、补码:补码等于反码加一,且比特位数量一致;进行负数加一个正数后大于0的式子的计算和正数加上一个负数后小于0的计算。

例:1111 1111(-0的反码)的补码为1111 1111+1=0000 0000(比特位数量一致

补码的运算:

例:1000 0100(-4的原码)+0000 0101(5的原码)-> 取负数的补码->1111 1100(-4的补码)+0000 0101=0000 0001(+1的原码

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个云玩家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值