原码补码问题?

问题比较深究,就像我高中学物理一样为什么力等于质量与加速度相乘,显然是正确的,但我不知道原理,所以白学。现在: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。

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

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

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

匿名用户
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.1亿
展开全部

补码的原理,是数学。

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

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

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

比如,三四岁的小孩,只会数一百个数: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%
帮助的人:443万
展开全部
-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

提交
取消

辅 助

模 式