二进制数的补码、原码

文章介绍了补码的概念,指出在计算机系统中,补码被用来代替负数,使得加减法统一为加法运算,简化了硬件设计。原码和反码在计算机中并不常用,因为它们无法有效表示某些数值。补码的计算和意义是理解和编程的基础知识。
摘要由CSDN通过智能技术生成

引言

补码(一个正数),它就是一个数字而已。
数字,可以写成各种进制,如:十、二、16 进制等等。
进行转换时,用十进制来计算,显然是最方便的。
只有在涉及到内存的时候,才会用到二进制。
比如在 “与或非左移右移等等” 时,就必须用二进制了。
由于,数值与补码的转换,可以不用二进制。那么,原码反码符号位,就都没有任何用处了。
而且,在计算机中,根本就没有原码和反码。所以,从原码反码开始学习补码只会把人绕进去

补码的计算

一个字节是 8 位 2 进制数,计数周期是 2^8 = 256。
-1 的补码,就是 255 = 1111 1111 (二进制);
-2 的补码,就是 254 = 1111 1110 (二进制);
。。。
-128 的补码,就是 128 = 1000 0000 (二进制)。
-------------------
所有负数的补码,都是正数。
而正数,已经就是正数,当然就不需要再代替了。
所以,【正数,根本就没有补码】。
-------------------
求补码,就是这么简单。原码反码取反加一,都是没有任何用处的。

=======******【划重点】******=======
求补码的通用公式:
 代替负数的正数 (即补数) = 负数 + 周期。
===================

补码的意义

综上所述:
 补码,它就是一个【代替负数】的正数
用补码(一个正数)代替负数之后,计算机中就没有负数了。
同时,减法,也就转换成加法运算了。
那么,加减法,就可以统一用加法实现了。
此时,计算机,只要配置一个加法器,便可走遍天下。

使用补码的目的,就是简化硬件。
而原码反码,都没有这种功能!
所以,在计算机中,根本就没有原码反码!

在计算机系统中,正负数值,一律采用补码表示和存储
此时,应该先明白:
 什么是补码呢?
 为什么要使用补码呢?

补码,来自于固定长度的运算方法。
你看 2 位 10 进制数的运算吧:
 25 - 1 = 24
 25 + 99 = (一百) 24
如果你忽略进位,只取 2 位数:
 +99 和-1 就是等效的;
 减法运算,也就能用加法来实现!

那么:
 +99 就可以称为【-1 的补数】。
 +98 就可以称为【-2 的补数】。
 。。。

两者关系式:
 正数 (即补数) = 负数 + 10^2。
式中的 10^2 = 100,是 2 位 10 进制数的计数周期。

三角函数
  -π/2、+3π/2,也是等效的。
即:-90°、+270°,正负两个角度,等效。
换算公式是:正角度 = 负角度 + 周期。
式中的周期是:2π(360°)。

除此之外,还有时针!
 倒拨 3 小时、正拨 9 小时,也是等效的。
算法:+9 =-3 + 12 (时针的周期)。

在计算机系统中,正负数值,一律采用补码表示和存储。
在计算机系统中,并不使用原码和反码。
在计算机系统中,原码和反码,都是不存在的。
不存在的东西,你还介绍它们干嘛呀?
当然,计算机老师,还指望用这个,坑骗学生!

数值和补码,是可以直接转换的
转换的方法,也有许多种。并不需要通过原码反码来过渡
况且,八位的原码和反码,都不能表示-128。
那么,-128 的补码,用原码取反加一是求不出来的。
由这一条,就从理论上证明了:“取反加一” 是不正确的。

——————————————摘自“做而论道_CS”的评论——————————————————

  • 11
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值