我的疑惑

一个字节8位,其中最高位表示正数和负数,0表示正数,1表示负数。所以能够表示-128~+127。

01111111可以表示+127。正数这一段没有问题,负数这一段有两个疑问

11111111只能表示-127啊,还有10000000表示什么啊,难道是-0。这样没有什么意义啊,其实表示的就是-128,但是在计算中又会出现问题,比如数学上,1+(-1)=0,而在二进制中00000001+10000001=10000010,换算成十进制为-2。

解决问题

其实在计算机里面将正数都保存成了补码。对于正数的补码是它本身,对于负数的补码是其反码+1(反码:将二进制数按位取反)。我们举个例子

127-128,一般在计算机中都是使用加法的。

  127 -128
原码 01111111 10000000
反码   11111111
补码 01111111 10000000

127     01111111

-128    10000000

        11111111因为这个是补码,转为反码就是11111110,原码是10000001=-1

为什么8位二进制的取值范围是-128~127,指的是补码的范围。

一个有意思的发现

里面的模-负数绝对值的原码=补码(可以看第一个参考地址)

我对模的定义,每一位二进制都可以存2个数,也就是它的容量。对于一个字节8位二进制,它的模是=256,也就是-128~+127里面中整数的个数。

参考

第一个比较经典

https://blog.csdn.net/leonliu06/article/details/78685197

https://zhidao.baidu.com/question/143216665.html

为什么8位二进制的取值范围是-128~127相关推荐

  1. 为什么int8的取值范围是-128 - 127

    为什么int8取值范围是-128 - 127 int8占1个字节,1字节(byte)占8位(bit)其中最高位代表符号位 1-负号:0-正号那么最大数值的二进制为: 0 1 1 1 1 1 1 1 换 ...

  2. 为什么8位有符号数的取值范围是-128~+127

    首先我们知道,计算机以补码的形式存储的,正数的补码是原码不变,负数的补码是原码的取反加1. 我们先来看+127,原码0111 1111对吧,若+128是多少呢,0111 1111 + 1 = 1000 ...

  3. 为什么8位有符号数的范围为“-128 — +127”?(转载加补充)

    这是一个困惑了我几年的问题,它让我对现在的教科书和老师极其不满,从我N年前开始摸电脑时,就几乎在每一本C++教科书上都说,8位有符号的取值范围是-128~+127,为什么不是-127~+127呢,后来 ...

  4. 8位有符号数的范围为-128 ~ +127 深入浅出探究

    8位有符号数的范围为-128 ~ +127,为什么不是 -127 ~ 127,-127 ~ 128等等? 这是一个困惑了我几年的问题,它让我对现在的教科书和老师极其不满! 从我二三十年前开始摸电脑时, ...

  5. java中 byte 取值范围_java中为什么byte的取值范围是-128到+127

    概念:java中用补码表示二进制数,补码的最高位是符号位,最高位为"0"表示正数,最高位为"1"表示负数. 正数补码为其本身: 负数补码为其绝对值各位取反加1: ...

  6. IEEE754标准中32位、64位浮点数的取值范围

    目录 32位 对于正浮点数 对于零 对于负浮点数 64位 对于正浮点数 对于负浮点数 IEEE标准中用来表示一个浮点数,其中 决定正负号,是尾数,是阶数. 32位 在32位浮点数中,符号位占1位,尾数 ...

  7. java byte 正数最大_为什么Java byte 类型的取值范围是-128~127

    概念:负数的补码是该 数 绝 对 值 的 原 码 按 位 取 反 ,然 后 对 整个数 加 1 步骤: 1.确定byte是1个字节,也就是8位 2.最大的应该是0111 1111,因为第一位是符号位, ...

  8. 二进制安全需要记住的取值范围 int8,unsigned int8,float32,Int32

    int int8取值范围是-128 - 127 unsigned int8 0-255 Int16 意思是16位整数(16bit integer),相当于short 占2个字节 -32768 ~ 32 ...

  9. java存储整数,用于存储整数数值的是 JAVA四种整数数据类型的取值范围分别是多少...

    JAVA四种整数数据类型的取值范围分别是多少 byte的取值范围为-128~127,占用1个字节(-2的7次方到2的7次方-1) short的取值范围为-32768~32767,占用2个字节(-2的1 ...

最新文章

  1. Java中getResourceAsStream的用法
  2. 麻省理工人工智能实验室发现更小更容易训练的神经网络
  3. UVALive 4035 - Undetectable Tour(并查集)
  4. [转载]:合并两个已排序好的int数组,并排序返回c#实现
  5. 手机连接蓝牙扫码枪_原来手机蓝牙的隐藏功能这么多,你不会还只用来连接耳机吧?...
  6. 数学--数论--素数
  7. 【模拟】Ingenious Lottery Tickets
  8. php array 取值 没有key,PHP array_key_exists不起作用;数组不是多维的
  9. oracle数据库笔记---oracleweb视图使用流程,及plsql安装
  10. 让iis记录nginx反向代理真实ip
  11. Adapter适配器模式
  12. 更改自定义按钮显示值并对单元格赋值
  13. asp.net 基础(一)
  14. [心得]分布式系统概念与设计知识整理
  15. php ob_get_contents,ob_get_contents();用法【转】
  16. 正项级数收敛性的判别法
  17. docker迁移禅道
  18. Wp8开发环境搭建总结
  19. 自行车码表CPU选型
  20. c语言中-next是什么意思,Java中关于nextInt()、next()和nextLine()的理解

热门文章

  1. 如何实现Windows Phone代码与Unity相互通信(插件方式)
  2. 十大经典排序算法之冒泡排序【一】
  3. 第一册:lesson forty three。
  4. vue+node+mongodb实现的功能
  5. docker搭建nginx
  6. 探究光栅图像学之水纹渲染与折射滤镜
  7. Maven配置之pom.xml(一)
  8. SSAS的MDX中的计算成员和命名集
  9. 设计模式的七大设计原则:其六:迪米特法则
  10. linux read函数_浅谈Linux内核IO体系之磁盘IO