热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

为什么一个字节可以表示的有符号整数的范围是128~+127?

为什么是-127~128?对于一个字节来说,能够表示的整数为什么不是-127~+127,也不是-127~+128,而是-128~+127对于有符号整数的表示和具体的编程语言无关,而

为什么是-127~128?

  对于一个字节来说,能够表示的整数为什么不是-127~+127,也不是-127~+128,而是-128~+127

  对于有符号整数的表示和具体的编程语言无关,而是由硬件决定的,我们能想到的最简单的方法就是用其中一位表示符号,剩余七位用来表示数据位。

 

  但这种方法有一个缺陷,就是会有+0和-0两个0,能够表示的数据只有-127~+127,同时使用两个位组合表示同一个数字有些浪费,补码很好的解决了这一问题。

  首先,对于正数的表示方法,与上述方法相同,但对于负数,首先符号位置为1,表示负。剩余7位数据位的表示方法和上述有很大不同。

  从一个9位组合10000000(无符号2进制)中减去一个负数的位组合,就是该负数值的数量。

  

  同理,-127可以表示为10000001:

   至此已经可以解释为什么一个字节可以表示的有符号数范围是-128~+127了。

 

  同时,如果要对二进制补码取反,只需要对其每一位取反再加一即可,例如,1是10000000,所以-1是11111110+1,即11111111,和前面所看到的是一样的。


推荐阅读
author-avatar
崔建洋
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有