长度为1个字节的二进制数,如采用补码表示,有3个1,5个0组成,则可以表示最小整数为
A-127 B-121 C-3 D -125 展开
-113,用5个1和3个0组成的二进制补码数,可表示的最小十进制数为:-113,其对应的二进制数为:10001111B。
8位无符号二进制数能够表示:0~255;8位有符号二进制数能够表示:-128~127。
计算机中的符号数有三种表示方法,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位,三种表示方法各不相同。
在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以统一处理。此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。
扩展资料:
二进制补码计算
正数的补码表示:正数的补码 = 原码
负数的补码 = {原码符号位不变} + {数值位按位取反后+1} or= {原码符号位不变} + {数值位从右边数第一个1及其右边的0保持不变,左边安位取反}
以十进制整数+97和-97为例:
一、+97原码 = 0110_0001b
二、+97补码 = 0110_0001b
三、-97原码 = 1110_0001b
四、-97补码 = 1001_1111b
补码的每一位,都代表一个数值。
在八位的补码中,最高位的 1,就代表-128。
其余位,都是正数。
各位的数值如下所示:
----------------------------
位置: 最高位 bit6 bit5 bit4 bit3 bit2 bit1 末位
数值:-128 64 32 16 8 4 2 1
----------------------------
如果想要得到最小值,显然,-128,就必须选中。
其它位都是正数,就应该尽量选小的。
所以,最小值的补码,就是: 1 0 0 0 0 0 1 1。
它代表的数值,就是:-128 + 2 + 1 =-125。
如果想要得到最大值,最高位的-128,就不能选了。
其它位都要选大的,这就是: 0 1 1 1 0 0 0 0。
它代表的数值,就是: 64 + 32 + 16 =+112。
值为-128 + 3 = -125
为什么是-128+3啊,最小的那个10000011是怎么算的啊,不是问的最小整数,所以应该是负数啊,所以3个1不是该在前面才最小么,(负数是越大越小啊),糊涂了,能讲的明白些么,尤其是为什么要加3啊??谢谢啦
补码的原理需要参考计算机组成方面的文献了,有很多文字,这里说不出来。它有自己的一些特征,是需要知道的。如:
当符号位一定时,余下的7位按照原码一样的规律保持着递增型。也就是说0000 0010 > 0000 0001 > 0000 0000。把符号位换为1也是如此,如1000 0010 > 1000 0001 > 1000 0000。因此可以知道3个1、5个0的最小数为1000 0011。
知道了表示,就可以得到大小了,按照各位的权值,就得出了:1 * 2^0 + 1*2^1 + 0*2^2 +0*2^3+...-1*2^7 = 1+2-128 = -125