为什么8位有符号类型的数值范围是-128~127

我们知道,对于有符号类型,计算机在处理的时候会把最高位当做符号位,0表示正数,1表示负数。举例来说(以下举例均针对8位有符号数):

0000 0001即为11000 0001即为-1,那么很容易得到8位有符号数值的表示范围应该是1111 1111 ~ 0111 1111,也就是-127~127,问题来了,-128是怎么来的呢?

在说明这个问题之前,先来补充点额外的知识:


在计算机的存储和计算中,统一的是采用补码进行处理和运算的,在弄清楚采用补码的好处之前,我们需要明确如下三个概念:

原码:是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。

反码:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。

补码:正数的补码与其原码相同;负数的补码等于其反码+1。

很明显,文章开头的举例即是原码,它很符合我们的直观感觉,但是在计算的时候麻烦就来了,如果直接运算,例如1+(-1)=0,运算的时候0000 0001 + 1000 0001 = 1000 0010(-2),很显然是错误的,因此符号位和数值位必须分开处理!这会增加计算机的硬件开销。我们换成补码试试,1的原码0000 0001,反码0000 0001,补码0000 0001(正数三者一致);-1的原码1000 0001,反码1111 1110,补码1111 1111(1111 1110 + 0000 0001);因此1+(-1)用补码来运算就是0000 0001 + 1111 11111 = 0000 0000(最高位溢出舍弃),结果是正确的。

由此可见,可以将减法运算转化成加法运算,计算机只需要实现加法电路即可,并且原码到补码的转换和补码到原码的转换过程是完全一致的,为什么?可以简单证明如下:

假设32位机器,X为负数(最高位是符号位,对于负数,即为1),则有X(绝对值)+X(反)=0xFFFFFFFFF,因此X(绝对值)+X(反)+1=0xFFFFFFFFF+1=0;所以得到0-X(绝对值)=X(反)+1,根据之前的定义X(反)+1即为X的补码,于是有X(补)=X(反)+1=0-X(绝对值);

1)那么对于A、B>0,令K=-B,显然K是负数,那么有A-B=A+(0-K(绝对值))=A+K(补),减法运算就转化成了加法运算。

2)X(绝对值)=0-X(补);两边同时乘以-1 得到-X(绝对值)=-0-(-X(补))=0-(X(补(绝对值)))=X(补)(反)+1;-X(绝对值)即为原码X;因此上式说明了原码X等于X的补码取反后加一,也就是说X补码的补码就是原码。不论是原码求补码还是补码求原码方式完全一致。


回到最开始的问题,8位有符号数值的最小值为什么是-128而不是-127呢,我们列出来部分原码、反码和补码的对照表看看:


图片发自简书App

从上表中我们可以看出,0在原码和反码中有两种表示方式,而对应的补码只有一种表示方式,-128在原码和反码中无法表示,在补码中却可以表示(用-127的补码1000 0001减1得到1000 0000)。而计算机中数值以补码形式存储和运算,当然-128可以表示出来,因此8位有符号数值的范围是-128~127,同理其他位数(16、32、64)也可以以此类推。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容