以2字节为例来说:

对于无符号的数值(原码反码及补码都一样),最大值为1111  1111  1111  1111=65535

最小值为0000  0000  0000  0000=0

对于有符号的来说较为复杂:

二进制原码最大为0111  1111  1111  1111=215-1=32767

二进制原码最小为1111  1111  1111  1111=-(215-1)=-32767
正0和负0:0000000000000000=1000000000000000=0
所以,二进制原码表示时,范围是-32767~-0和0~32767,一共65536个。

因为有两个零的存在,所以不同的数值个数一共只有216-1(65535)个,比16位二进制能够提供的216个编码少1个。

但是计算机中采用二进制补码存储数据。

正数编码不变,从0000  0000  0000  0000到0111  1111  1111  1111依旧表示0到32767

负数需要把除符号位以后的部分取反加1,即-32767的补码为1000  0000  0000  0001。
到此,再来看原码的正0和负0:0000  0000  0000  0000和1000  0000  0000  0000,补码表示中,正0的补码还是0000  0000  0000  0000,负0经过非符号位取反(1111  1111  1111  1111)加1后,同样变成了0000  0000  0000  0000,也就是正0和负0在补码系统中的编码是一样的。

但是,我们知道,16位二进制数可以表示216个编码,而在补码中零的编码只有一个,也就是补码中会比原码多一个编码出来,这个编码就是1000  0000  0000  0000(负0的原码),因为任何一个原码都不可能在转成补码时变成1000  0000  0000  0000。所以,人为规定1000000000000000这个补码编码为-32768。
所以,补码系统中,范围是-32768~32767。

因此,实际上,二进制的最小数确实是1111111111111111,只是二进制补码的最小值才是1000000000000000,而补码的1111111111111111是二进制值的-1。
---------------------
作者:贝尔拉梅拉热翔
来源:CSDN
原文:https://blog.csdn.net/u010771437/article/details/47960607
版权声明:本文为博主原创文章,转载请附上博文链接!

最新文章

  1. 【日记】搭建一个node本地服务器
  2. iOS Version 和 Build 版本号
  3. iOS---用Application Loader 上传的时候报错No suitable application records were found. Verify your bundle identifier 'xx' is correct
  4. Ceph剖析:Paxos算法实现
  5. [Architecture Pattern] Factory Builder
  6. c++ 普通高精乘
  7. RAC_Oracle集群服务安装前期准备Prepare(案例)
  8. C# 和 Unix 时间戳转换
  9. 谷歌的C++智能指针实现
  10. Ireport 报表导出 Poi + ireport 导出pdf, word ,excel ,htm
  11. cairo graphics.org
  12. 填写数独 洛谷P1784
  13. js 获取当前日期或者前、后N天yyyy-MM-dd的方法
  14. python 全栈开发,Day61(库的操作,表的操作,数据类型,数据类型(2),完整性约束)
  15. 如何使用Cassandra来存储time-series类型的数据
  16. 搭建vue开发环境步骤
  17. [外观] Firemonkey Windows Hint 气球样式
  18. RabbitMQ--Publish/Subscribe(五)
  19. HTTPS、SPDY和HTTP/2的性能比较
  20. javaweb消息中间件——rabbitmq入门

热门文章

  1. 解读 IoC 框架 InversifyJS
  2. 【Swift 4.0】iOS 11 UICollectionView 长按拖拽删除崩溃的问题
  3. 【Swift】iOS开发笔记(一)
  4. JQuery 获取select 的value值和文本值
  5. iOS 封装SDK以及封装时bundle文件的处理
  6. ADO.NET之使用DataSet类更新数据库
  7. js-webpack自动化构建工具
  8. js 实现论坛评论模块原理
  9. Civil 3D .NET二次开发第11章代码升级至2018版注意事项
  10. 【SPOJ】DIVCNTK min_25筛