某补码表示的8位二进制整数由5个1和3个0组成,则其可表示的最小值是( )。A、-120 B、-15 C、-113 D、-121
选C。
由题目可知这是一个带符号为的8位二进制数,所以最高位要表示负数符号要用掉一个“1”。所以剩下4个“1”和3个“0”。
-1的补码是1111,1111;扣除最高符号位表示为111,1111。-2的补码是1111,1110;扣除最高符号位表示为111,1110。由此可以看出来补码表示的负数“1”权越大数越大,最后的-128补码就是1000,0000了。
所以剩下的4个“1”和3个“0”为了表示最小数应该排列成000,1111的形式,最终补码为1000,1111=-133。
计算机
中的有符号数有三种表示方法,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位,三种表示方法各不相同。在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理 。
给你看个例子,-1的补码是1111,1111;扣除最高符号位表示为111,1111。-2的补码是1111,1110;扣除最高符号位表示为111,1110。由此可以看出来补码表示的负数“1”权越大数越大,最后的-128补码就是1000,0000了。
所以剩下的4个“1”和3个“0”为了表示最小数应该排列成000,1111的形式,最终补码为1000,1111=-133
选C
说选A的请注意:
-120的源码是1111,1000,负数的补码要将表示数值的部分111,1000取反加1,应该得-120的补码应该为1000,1000。
补码的每一位,都代表一个数值。
在八位的补码中,最高位的 1,就代表-128。
其余位,都是正数。
各位的数值如下所示:
----------------------------
位置: 最高位 bit6 bit5 bit4 bit3 bit2 bit1 末位
数值:-128 64 32 16 8 4 2 1
----------------------------
你希望得到最小值,显然,-128,就必须选中。
其它位都是正数,就应该尽量选小的。
所以,最小值的补码,就是: 1 0 0 0 1 1 1 1。
它代表的数值,就是:-128 + 8 + 4 + 2 + 1 =-113。