为什么补码没有正0与负0之分?是不是反码11111111+1=100000000所以补码没有正0与负0之分啊?

如题所述

我们都知道计算机中的数据是用 补码 表示的。相信大家对他们的概念都比较熟悉了,现在说一下需要注意的几个地方。 我们暂且用 8 位表示。
1、原码的表示范围是 -127 ~ +127 共256个。(包含一个 +0 和 -0)。正是由于原码有 正负零之分,给我们的运算带来了很大的麻烦。所以才引进 反码

2、反码的表示范围是 -127 ~ +127 共256个。(包含一个 +0 和 -0)。
正数的反码与原码相同。负数的反码,首位(符号位)不变,其他位取反。
例: +0 反码是:00000000
-0 反码是:11111111 (符号位是1,其他位取反)

3、补码的表示范围是 -128 ~ +127 共256个。
例:+0 的补码:00000000
-0 的补码:00000000 (反码 加 1)

例: -127 的补码 怎么计算呢?
-127 原码是 11111111 ---> 反码为 10000000 ---->补码为 10000001 。即 在计算机中, 10000001 就表示 -127。

4、在这 8 位系统中,-128 没有相对应的原码和反码,它在计算机里面的表示形式是:10000000
所以,计算机为32位的时候,10000000000000000000000000000000 表示 -2(31)。2的 31 次方。

5、对于编程语言中的 移位 运算,比如一个32 位的 int 型左移 33 位,这样的话我们可以取模运算。即 对于 n>32的数,语言规定的就是 实际移位数为 (n-32)。比如左移 33 位,实际上和左移 1 位 是相同的。
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-08-03
解决方法很多!这个没有为什么,它本身就没有,补码的最高位表示符号,1为负,0为正
第2个回答  2022-09-28

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

数值,也就是自然数、整数,只有:正数、负数、零。

从来就没有“正零”“负零”。

所以,补码,也就只有零的补码:0000 0000。

正零负零,都是原码和反码弄的。

而计算机中,并没有原码和反码,所以,就不必多虑了。

为什么补码没有正0与负0之分?是不是反码11111111+1=100000000所以补码没...
1、原码的表示范围是 -127 ~ +127 共256个。(包含一个 +0 和 -0)。正是由于原码有 正负零之分,给我们的运算带来了很大的麻烦。所以才引进 反码。2、反码的表示范围是 -127 ~ +127 共256个。(包含一个 +0 和 -0)。正数的反码与原码相同。负数的反码,首位(符号位)不变,其他位取...

为什么补码没有正0与负0之分
照此,加0和减0都是同样的结果的话,正0和负0都一样都是0 按照补码的求法:负0=正0的二进制取反加1,00000000B取反=11111111B,加1=100000000B,因采用8位二进制计算,最前面的1被舍弃,因此负0的补码为00000000B与正0相同

+0或者-0的源码、反码、补码
负数的补码就是反码整体加一。符号位上的进位舍弃。(所以,舍弃了符号位的补码的第一位是数值位,不是符号位,符号位舍弃了)另外解释一下原码符号位和补码符号位的关系,补码的符号位不是保持原码的第一位不变,而是 符号位不变,[-0]反码的第一个1是符号位,尾数中的7个1是数值位,尾数加一后...

补码+0和-0相同?
-0原码是10000000 0反码是00000000 -0反码是11111111 0补码是00000000 补码没有正0与负0之分 正数的反码、补码和其原码相同负数的反码是其原码除符号位外其他位取反负数的补码是取其反码后加1

如果负数的反码是11111111那它的补码怎么算
11111111的补码=11111111+1=100000000取8位为00000000 也就是说+0和-0有同样的表示。

-128的原码和补码都是一样吗?都是10000000?
的确都是10000000。-128的原码是10000000。反码是11111111。补码是反码+1:依然是10000000。(因为加1进位了,但是只有8位,所以进位无法显示)。

1000000的补码是多少?
你的问题可以这样解决 [10000000]补 =[10000000]反+1 =11111111+1 =(1)00000000 =00000000(最高位溢出了,符号位变成了0)你可能会问 :10000000这个补码表示的哪个数的补码呢?其实这是一个规定,这个数表示的是-128 所以n位补码能表示的范围是 -2^(n-1)到2^(n-1)-1 比n位原码能表示的...

计算机为什么要用反码存储整型
问题出现在(+0)和(-0)上,在人们的计算概念中零是没有正负之分的.(印度人首先将零作为标记并放入运算之中,包含有零号的印度数学和十进制计数对人类文明的贡献极大).于是就引入了补码概念. 负数的补码就是对反码加一,而正数不变,正数的原码反码补码是一样的.在补码中用(-128)代替了(-0),所以补码的表示...

为什么补码取反加1?
补码是计算负数二进制表示的一种方法。它涉及将负数的二进制形式取反,再加上1。此过程确保了负数的补码表示能通过简单的加法操作进行减法运算。例如,-5的8位二进制表示为10000101,取反得到反码11111010,然后加1得到补码11111011。补码的原理基于“模(mod)”的概念。模是指计算系统的计数范围,例如12...

为什么有符号数的负数的补码是反码+1?
其正数的反码+1”,极为垃圾的教材才会把这个计算方法作为初始方法来教。因为这个计算方法屏蔽了补码的计算原理。其实这不过是 “256 - 欲求的负数的绝对值 = 此负数的补码”的一个比较取巧的计算方法而已。请看 256=1 0000 0000 =1111 1111+1,而 1111 1111减任何二进制数的结果就是把这个数取...

相似回答