原码补码问题?

问题比较深究,就像我高中学物理一样为什么力等于质量与加速度相乘,显然是正确的,但我不知道原理,所以白学。现在:1.为什么求补码是取反再加1呢?2.为什么规定1为正,0为负... 问题比较深究,就像我高中学物理一样为什么力等于质量与加速度相乘,显然是正确的,但我不知道原理,所以白学。现在:1.为什么求补码是取反再加1呢?
2.为什么规定1为正,0为负呢?
3.为什正数原码与负数进行运算要与负数的补码进行运算才正确呢?
4.为什么负数的补码取反再加1等于原码呢?
展开
 我来答
匿名用户
2022-11-11
展开全部

计算机系统中,数值,一律用补码来表示和存放。

原码和反码,在计算机中,都是不存在的。

使用补码代表正负数值,可将负数,转换成正数来计算。

这就可以节省硬件,只用加法器,便可实现加减法运算。

补码,是是什么意思? 这得从【补数】谈起。

计算机所计算的位数,是固定的,如八位机。。。

位数限定之后,其计数范围,就有了周期性。

如两位十进制 0~99,周期就是 100(一百)。

那么,减一,就可以用 +99 代替:

   25 - 1 = 24

   25 + 99 = (一百) 24

舍弃进位,只取两位,这两种算法,功能就是相同的。

这就用正数,代替了负数! 用加法,就实现了减法运算!

99,就是-1 的补数。 计算公式:补数 = 周期 + 负数。

学过三角函数的同学,都知道,函数周期是:2π(360°)。

那么-90°,也可以+270° 来计算。 这也是同样的道理。

一个负角度,怎么计算出“等效的正角度”,大家都会。

-------------------------

计算机用二进制,补数,就改称为:补码。

八位二进制:0000 0000 ~ 1111 1111。

对应十进制:0 ~ 255。

计数周期是:2^8 = 256。

那么,

-1 的补码是 256 + (-1) = 255 = 1111 1111(二进制)。

-2 的补码是:254 = 1111 1110。

。。。

-128 的补码是:128 = 1000 0000。

用不存在的“原码反码取反加一”来求,也是这个结果。

求负数补码的计算公式,也是: 周期 + 该负数。

正数,也可以使用这个公式。但是,计算后,这个周期的数值,

超出了计数范围,就略去了。 最后,还是这个正数。

-------------------------

例如: 7-3 = 4。

用补码的计算过程如下:

    7 的补码=0000 0111

   -3的补码=1111 1101

--相加-------------

   得  (1)  0000 0100 = 4 的补码

舍弃进位,只保留八位作为结果,就求出了 7-3。

-------------------------

原码和反码,在计算机中,都是不存在的,无用的。

它们不过是,计算机老师捧在手中的

上海巴鲁图工程机械科技有限公司_
2022-05-15 广告
光电编码器,是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量的传感器。光电编码器每转输出60(我们用老板没有说)个脉冲,五线制。其中两根为电源线,三根为脉冲线(A相、B相、Z)。电源的工作电压为 (+5~+24V)直流电源。光... 点击进入详情页
本回答由上海巴鲁图工程机械科技有限公司_提供
匿名用户
2013-07-19
展开全部
1:我们来看一下补码的求得过程:将原码的各位取反,再加1,得到补码。举个例子,1001,它全部取反之后就是0110,再加1得到0111。将原码与补码加相,会得到10000。我们应该知道,计算机最基础的运算器只能做加法,所以叫累加器,它做不了减法。所以当需要减法的时候我们取减数的补码,用被减数去加这个补码。如果是1111-1001=0110的话就相当于1111-(10000-0111)=1111+0111=0110,其中0111是1001的补码。由于码不像数字,码是有位数的限制的,当有多于其位数的操作时是不表现出来的,所以减去一个数的原码就相当于加上它的补码。相信,看明白了这一条,第三个问题也就解决了。2.规定……惯例的,当初就这么说的,反正二进制就两个数,不是0就是1,取反就是对方。1比0大,正数比负数大……我是这样想的,这一点我不敢肯定。4.不记符号位的话,原码+补码=100...0(0的位数与原码的位置一致),那你说这两个码是不是互为原补码?取补码之后再取一次补码就是自身了。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
做而论道
高能答主

2022-11-11 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.2亿
展开全部

补码的原理,是数学。

并非能用“取反加一”这种简单操作,就能说明白的。

数学中,有些变化规律,具有周期性。

因此,只要了解一个周期内的,就可以了。

比如,三四岁的小孩,只会数一百个数:0~99。

到了 100(10^2),就又重新开始了。

这就是一个周期。

而且,他只会做加法,不会做减法。

那么,你就可以教他:用加法,来计算减法:

  25 - 1 = 24

  25 + 99 = (一百) 24

不要进位,只保留两位数,此时,+99 就能当做-1 使用。

同理,98 就可以代替-2。

。。。

这些代替负数的正数,就是“负数的补数”。

计算公式:补数=负数+周期(10^n)。

     n 是补数的位数。

----------------------

计算机用二进制,这就叫做“补码”了。

8 位 2 进制数是:0000 0000~1111 1111 (十进制 255)。

计数周期就是:2^8 = 256。

那么,-1 的补码,是:-1 + 256 = 255 = 1111 1111。

-2,补码是:-2 + 256 = 1111 1110。

。。。

正数,必须直接去运算,不许变化。

所以,正数,不存在补码。

-----------------------

补码,是很简单的东西。

补码,与原码反码,毫无关系。

用求反加一来求补码,是不会理解补码的意义的。

搞计算机的人,一般都不好好上学,数学水平都很低,讲不清道理,只能弄些烂操作唬人。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
修蒙帅沛山
2020-05-26 · TA获得超过3734个赞
知道大有可为答主
回答量:3061
采纳率:34%
帮助的人:444万
展开全部
-128的原码是10000000.带符号位的8位二进制数最高位为符号位,负数为1正数为0.所以最大正数为01111111,0没有符号,所以用00000000表示0,10000000则不带表0,-127二进制为11111111,减1即加-1(10000001)结果为110000000,第九位溢出舍去结果为10000000,负数原码补码转换关系,原码=补码按位取反加1,正数原码补码相同,10000000取反为01111111加1后为10000000,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2013-07-19
展开全部
你问的这问题就相当于是问,为什么苹果往地上落而不往天上落呢???你说为什么??
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式