首页 > 试题广场 >

由3 个“1”和 5 个“0”组成的 8 位二进制补码,能表

[单选题]
3 “1” 5 “0”组成的 8 位二进制补码,能表示的最小整数()
  • -126
  • -125
  • -32
  • -3
基本概念: 1.正数的原码、反码、补码都相同; 2.负数的原码:最高位为1,其余位为真值的绝对值; 3.负数的反码:在原码的基础上,符号位不变,其余位按位取反; 4.负数的补码:在原码的基础上,符号位不变,其余位取反,最后加1;也就是在反码的基础上加1。 负数的补码向源码转换步骤 1. -12的补码:1111 0100 2. 最高位不变,其余位取反:1000 1011 3. 加一得到原码:1000 1100 思路分析: 1. 求最小的值,那么肯定是负数最小,最高位为1表示为负数 2. 剩下的5个0和2个1要组成一个补码,只有1000 0011这种补码形式转换成原码后值最大 操作步骤 1. 最高位不变,其余位去反 1111 1100 2.加1 1111 1101 计算后得到-(64+32+16+8+4+1)=-125
发表于 2019-08-15 00:26:18 回复(0)
正数:原码=反码=补码
负数:反码=原码取反(符号位除外),补码=反码+1;

题目要求最小,那么为负数,最高位为1,那么补码中还剩2个1可以安排。
要求原码最大,那么反码需要最小反码=补码-1。
1.穷举法:
如果反码为1000 0001(最小的反码),那么补码为:1000 0010(补码中要求3个1,不符合);
如果反码为1000 0010(第二小的反码),那么补码为1000 0011(复合要求)。
那么1000 0010的原码为1111 1101 = -125
2.反推法
原码最大那么要求反码最小,而补码=反码+1,那么要求补码最小。
得到补码条件:二进制有2个1的最小的补码(不考虑符号位):1000 0011
那么反码为:1000 0011 - 1 = 1000 0010;原码:1111 1101 = -125
编辑于 2019-08-29 15:25:50 回复(0)
发表于 2020-08-06 18:55:19 回复(0)
要求最小整数,那么肯定是负数,符号位拿一个1,接下来不考虑符号位,要得原码最大,那么补码就要最小。 10000011 (补码) 10000010 (反码) 11111101 (原码) 即: -125
发表于 2020-04-17 11:18:35 回复(0)
运算用原码,存储数据用补码
符号位不参与运算
发表于 2021-09-09 09:56:20 回复(0)
数字是如何在计算机存储的?输入整数 → 原码 → 补码 → 用补码存储计算
规则:正数原、补、反相同,负数 (1)补码=反码+1 (2)反码 = 原码符号不变+数值位取反
在负数情况下,为了让整数最小,就要让原码数值位最大,就是要让反码最小,即让补码最小。(原和反成反比,反和补成正比)
补码:1000 0011
反码=补码-1 : 1000 0010
原码: 1111 1101
就是1+4+8+16+32+64=125

————————为什么计算机要以补码存储数据?——————

一、背景

例如,2-1按原码的话:
(0000 0010)原 + (1000 0001)原 =1000 0011 = -3,计算错误,应该等于1啊。所以要换一种表达方式。
所以要用补码计算:
(0000 0010)补/原 + (1111 1111)补 =  (00000 0001)补。这样就能得到正确答案1啦。

二、猜测

第一个加数,补码和原码都一样,可以略过;第二个加数是负数,却从原码转换成了补码,我们可以从这思考。
我们发现:
(1 111 1111)补 是 -1
(0 111 1111 )原 是127
【不看符号位】
原来相同数值位的补和原,是互补的数。
原来,计算机通过加“互补数”就能得到正确算数答案

三、余数的魅力

这对“互补数”有一个特点:
-1 mod 128 = 127
127 mod 128 = 127

这就相当于以128为最大数,每128就是一个轮回,这个和钟表类似:

现在是6点,我们如何把钟表调成4点?
6-2 mod 12 = 4 //往回调2个钟头
6+10 mod 12 = 4 //忘后调10个钟头

所以,4点有两种表示方式
4  = 4 (mod12)
4 = 16 (mod12)
上述二进制的互补数也有两种表示方式
127 = -1 (mod128)
127 = 127 (mod128)①
即-1 = 127 (mod128)

三、得到余数mod算式

我们只看负数-1,它的数值是-1,“补码的数值位”是127
-1 = 127(mod128)
我们把这个式子两边同时+2,因为正数2的原码和补码一样
 2-1 = 2 + 127(mod128)
这就是“2-1”的算法。

四、采取补码的好处

由于“负数数值”和“负数补码取数值位”是轮回的关系,可以有效避免存储进制“被撑爆”。

编辑于 2021-03-31 21:58:06 回复(0)

错解:

该数为10000011,十进制为131.而正常的数在-127—128之间,所以超出了3位数,为-3.

正解:

注意,这里说的是二进制补码,所以要将补码还原成原码。

补码是原码取反+1.

补码10000011。

减去1变成10000010.

再取反变成1111 1101.

所以为-(64+32+16+8 +4+1=-125.)

发表于 2020-07-30 22:42:17 回复(0)
既然求最小整数,那肯定先想到负数,则最高位(符号位)一定为1,原码中肯定是1所在的位数越高,值越小,而补码是由原码取反加1得到的,则在补码中1所在的位数一定要越低,即补码为1000 0011;由补码求得原码:1111 1101=-(64+32+16+8+4+1)=-125;
发表于 2019-08-03 20:38:44 回复(6)
A -126 
原码     11111110
补码      符号位不变,其余取反再加1
             10000010 
B -125
原码      11111101
补码      10000011
发表于 2019-07-03 16:09:14 回复(2)
我不懂补码反码
最小值-128,也就是最高位1,后面7个零,两个1安在最后面肯定最接近-128了,就是相当于加3嘛,不就-125
发表于 2019-08-06 15:43:21 回复(0)
思路是,补码转换为原码时,有个取反的过程,要让尽可能多的0在高位。 同时负值不变,所以只可能是10000011
发表于 2021-10-10 09:37:23 回复(0)
没看懂题目,看了解析了解了,就是用八个数字造一个最小的二进制数
发表于 2021-10-06 15:51:09 回复(0)
负数二补的取反+1
发表于 2021-09-29 22:01:04 回复(0)
-126 即:原码的补码 1111 1110 ,补码的补码为:1000 0010  ,这个二进制码为原码,不符合:“1” 5 “0”
-125即: 原码的补码 1111 1101,补码的补码1为:1000 0011,这个二进制码为原码,符合:“1” 5 “0”
 
发表于 2021-09-07 16:29:02 回复(0)
1、正数的原码、反码、补码都相同; 2、负数的反码 = 原码除符号位外取反; 3、负数的补码 = 反码+1。 4、计算机中存储的是补码。
发表于 2021-07-21 17:24:20 回复(0)
选择代入法也挺好的
发表于 2021-04-01 11:20:04 回复(0)
原码+1,再除符号位全部取反得到补码。补码10000011,原码11111101
发表于 2021-02-04 13:09:55 回复(0)
基本概念: 1.正数的原码、反码、补码都相同; 2.负数的原码:最高位为1,其余位为真值的绝对值; 3.负数的反码:在原码的基础上,符号位不变,其余位按位取反; 4.负数的补码:在原码的基础上,符号位不变,其余位取反,最后加1;也就是在反码的基础上加1。 负数的补码向源码转换步骤 1. -12的补码:1111 0100 2. 最高位不变,其余位取反:1000 1011 3. 加一得到原码:1000 1100 思路分析: 1. 求最小的值,那么肯定是负数最小,最高位为1表示为负数 2. 剩下的5个0和2个1要组成一个补码,只有1000 0011这种补码形式转换成原码后值最大 操作步骤 1. 最高位不变,其余位去反 1111 1100 2.加1 1111 1101 计算后得到-(64+32+16+8+4+1)=-125
发表于 2021-01-07 08:25:32 回复(0)
1、正数的原码、反码、补码都相同;
2、负数的反码 = 原码除符号位外取反;负数的补码 = 原码除符号位外取反+1,计算机中存储的是负数的补码。
3、几个特殊的原码补码例子。我们知道,8位只能表示 -128到127,即:
   排序                      数字                    补码
255      -1      11111111  
254      -2      11111110 
.
.
130      -126      10000010
129      -127      10000001  
128      -128      10000000  
127      127      01111111
.
.
2        2      00000010
1        1      00000001
对于正数127 = 0111 1111,它的最高为为0,补码=原码=反码=0111 1111;
对于负数-127 = 1000 0001,我们对 1000 0001 除符号位外,进行减一取反/取反加一,得到 -127原码=1111 1111,除符号位1外,其余值相加为127,正好表示-127.
对于负数-128 = 1000 0000,我们对 1000 0000 除符号位外,进行减一取反/取反加一,发现除符号位取反后是 111 1111 ,加一 得到 1000 0000,此时应该在其签名再加一个1,表示这是-128的原码:1 1000 0000。  
我们知道128不能使用8位表示,必须使用9位表示 0 1000 0000.

再回到本题,我们想知道补码表示的数,需要知道他的原码,即对补码除符号位外,进行取反加一。我们想使得补码最小,首先补码是负数,第一位是1,其余的1放在尾部,因为整体要取反+1,那么就是 1000 0011,取反加一为:1111 1101 = -126.
发表于 2020-07-05 16:37:05 回复(0)
<p>补码:1000 0011</p><p>源码: 1111 1101 </p><p>-( 2^7 -1-2 )=-125</p>
发表于 2020-06-05 21:05:04 回复(0)