一篇轻松带你Carry原码、反码、补码(建议收藏)

cc8b9af695d241f1abcc6a424efd5529.jpeg

目录

前言

原码、反码、补码

一、一些基础概念

1.机器数

2.真值

3.十进制转换二进制

二、原码

三、反码

四、补码

练习题

用补码运算计算9-12

1.转换为加法

2.转化为原码

3.转换为反码

4.转换为补码

5.计算

6.转换为反码

7.转换为原码

8.转换为十进制

总结


 

前言

原反补是为负数而设计的,所以可以理解为正数没有反码补码,就是用原码运算。只是为了和负数保持概念一致,所以正数的原码 = 反码 = 补码。

只考虑正数和负数的情况下,加法运算有三种(正数和正数,正数和负数,负数和负数),

用原码可以正确算出正数和正数,但是负数就会出错。

用补码可以正确算出加法的三种情况。

原码、反码、补码

一、一些基础概念

1.机器数

由于计算机的硬件决定,任何存储于计算机中的数据,其本质都是以二进制码存储,在计算机用一个数的最高位存放符号, 正数为0, 负数为1,举例:十进制中的数(5),转换为机器数就是00000101,那么它的相反数即十进制中的数(-5),转换为机器数是10000101。

2.真值

因为带有符号位,所以机器数的形式值不等于其真值,以机器数1000 0011为例,其真正表示的值为-3,而形式值为131。将带符号的机器数的真正表示的值称为机器数的真值。

3.十进制转换二进制

用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来

二、原码

原码表示法在数值前面增加了一位符号位(即最高位为符号位),原码不能直接参加运算,可能会出错,举个例子:十进制中1+(-1)=0,而在用原码运算的话0001+1001=1010,换算成十进制为-2,答案不一样这不显然错了吗。

问题就出现在了一个数加上它的相反数不等于0,那么就有了补码来解决这点。负数和正数互为相反数,所以干脆用一个正数按位取反来表示负数。

三、反码

反码就是一个数,它的原码除符号位外,按位取反。

四、补码

负数的补码等于反码+1

举例-5的原码是10000101,反码是11111010,补码是11111011。

现在用补码计算(-2)+(-3):

1010+1011->1101+1100->1110+1101=1011,补码1011的反码是1010,反码1010的原码是1101即-5。

练习题

用补码运算计算9-12

注:(计算时注意正数的补码就是原码)

1.转换为加法

9+(-12)

2.转化为原码

00001001+10001100

3.转换为反码

00001001+11110011

4.转换为补码

00001001+11110100

5.计算

11111101

6.转换为反码

11111100

7.转换为原码

10000011

8.转换为十进制

-3

总结

原码、反码、补码的引入是为了解决做减法的问题。在原码、反码表示法中,我们把减法化为加法的思维是减去一个数等于加上这个数的相反数,结果发现引入符号位,却因为符号位造成了各种意想不到的问题,而补码就是来解决这个问题的。

 

 

 

  • 97
    点赞
  • 146
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 43
    评论
评论 43
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

天寒雨落

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

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

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

打赏作者

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

抵扣说明:

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

余额充值