从二进制的原码说起:

如果以最高位为符号位,二进制原码最大为0111111111111111=2的15次方减1=32767最小为1111111111111111=-2的15次方减1=-32767此时0有两种表现方法,即正0和负0:0000000000000000=1000000000000000=0

所以,二进制原码表现时,范围是-32767~-0和0~32767,因为有两个零的存在,所以不同的数值个数一共只有2的16次方减1个,比16位二进制可以提供的2的16次方个编码少1个。

但是计算机中采取二进制补码存储数据,即正数编码稳定,从0000000000000000到0111111111111111依旧表现0到32767,而负数需要把除符号位当前的部分取反加1,即-32767的补码为1000000000000001。

到此,再来看原码的正0和负0:0000000000000000和1000000000000000,补码表现中,前者的补码还是0000000000000000,后者经过非符号位取反加1后,同样酿成了0000000000000000,也就是正0和负0在补码系统中的编码是一样的。

但是,我们知道,16位二进制数可以表现2的16次方个编码,而在补码中零的编码只有一个,也就是补码中会比原码多一个编码出来,这个编码就是1000000000000000,因为任何一个原码都不可能在转成补码时酿成1000000000000000。

所以,人为规定1000000000000000这个补码编码为-32768。所以,补码系统中,范围是-32768~32767。

因此,实际上,二进制的最小数确实是1111111111111111,只是二进制补码的最小值才是1000000000000000,而补码的1111111111111111是二进制值的-1。

注:

以补码形式来运算的话,设计的逻辑电路会简单很多,会少很多逻辑运算器件,所以计算机采用补码的形式来运算。

补码中关于-32768的问题相关推荐

  1. 原码、反码、补码问题以及-32768~+32767问题

    原码.反码.补码问题以及-32768~+32767问题 1. 原码.反码.补码问题  在C语言中,对于有符号整形数,原码的最高位为符号位,符号位为0表示正数,符号位为1表示负数,仅用原码来表示数是没有 ...

  2. 补码中的+0和-0为什么机器码相同?

    接着上文来说,借助同余的概念,我们引入了补码. 对于原码和反码来说,+0和-0的机器码由不同的二进制串表示. 原码: +0:00000000 -0:10000000 反码: +0:00000000 - ...

  3. C语言中short整型数据的范围-32768----32767是中的-32768是如何确定的

    short整形在32位PC上是2个字节表示的,每个字节是8个二进制比特,一共就是16个比特 16个比特,能表示的数的个数是 0 - 2^16-1,即0 - 65535共65536个,如果表示正负整数各 ...

  4. 关于-32768补码的问题

    首先要知道的是计算机中补码的表示是唯一且连续的!我想这是计算机为什么不用原码来表示的一个原因!另外,以补码形式来运算的话,设计的逻辑电路会简单很多,会少很多逻辑运算器件,所以计算机采用补码的形式来运算 ...

  5. (原码反码补码的计算)在一个8位的二进制的机器中,补码表示的整数范围是从_(1)_(小)到_(2)_(大)。这两个数在机器中的补码表示为_(3)_(小)到_(4)_(大)。数0的补码为_(5)_。

    https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注! 欢迎关注微信公众号:宝藏女孩的成长日记 如有转载,请注明出处(如不注明,盗者必究) 目录 题目 分析过 ...

  6. 计算机中的原码,计算机中的原码反码补码移码

    计算机中的原码反码补码移码 原码 数值 X 的原码记为 [X]原,如果机器字长为 n (即采用 n 个二进制位表示数据),则最高位是符号位,0 表示正号,1 表示负号,基余的 n~1 位表示数值的绝对 ...

  7. c语言补码计算方法,探讨C语言学习中补码计算方法.doc

    探讨C语言学习中补码计算方法 探讨C语言学习中补码计算方法 摘要:补码是C语言学习中的一个重点和难点,如何能够快速准确地计算出各个数的补码值得我们探讨.本文从补码的意义入手,采用逆向逻辑思维,分别提出 ...

  8. 关于补码移码各自和原码的联系、来历、功能及I EEE754标准中移码范围问题

    最近在学习计算机组成原理时,遇到一些问题,记录在此. 如果你对下面这段话有疑惑或者兴趣,我或许能说点什么你感兴趣的. 真值-128的补码:1000 0000,这个补码本身表示的二进制数(无符号)是12 ...

  9. c语言相反数补码,C语言中补码的整数运算特性

    前言 本篇博客以"SSD6-Exercise2-Data Lab: Manipulating Bits"为例,分析在对C语言中的整数采用补码(two's-complement)编码 ...

  10. 有符号类型的最小负数的补码的由来

    有符号类型的最小负数的补码的由来 一. 16位的有符号整数(int) 在计算机中是用补码存储数据 为什么不用原码存 就是因为原码表示不了最小值-32768 如果是原码表示的话,编码中+0是用16个0表 ...

最新文章

  1. C++实现求数组中前K大的数
  2. java 数组json_如何在Java中创建JSON数组
  3. Sublime Text3 如何安装、删除及更新插件
  4. boos::reverse_iterator相关的测试程序
  5. RabbitMQ延迟消费和重复消费
  6. 单独运行shell脚本与crontab运行shell脚本的区别
  7. python中函数和类的区别_Python中函数和方法的区别
  8. 为什么软件测试容易被小看,做软件测试容易忽视的问题
  9. 如何套用模板绘制生产管理流程图
  10. Eclipse用法与技巧——导入工程时报错(already exist in the workspace)
  11. discard python_Python学习第三天
  12. linux安装jdk1.8之后报错Error: dl failure on line 893的解决办法
  13. FFmpeg的下载及其简单使用
  14. bat windows10系统垃圾清理---
  15. 十年游戏建模师给想学次世代游戏建模同学的一些忠告,太受益了
  16. haproxy编译安装以及配置文档介绍
  17. Revo Uninstaller快捷键命令
  18. java根据生日判断生日和星座
  19. visionpro的无脚本和高级脚本(你要偷偷的卷,然后惊艳所有人)
  20. oracle 索引的创建和生效

热门文章

  1. burst什么意思_burst是什么意思
  2. 苹果企业开发者账号证书申请(保姆级)
  3. 记录自己的鬼压床——长发
  4. java 抓图程序的实现
  5. 助睡眠的神器,这些东西能改善失眠,一觉睡到天亮
  6. 华为手机怎么连接苹果电脑?
  7. C语言初学者如何制作一个完整的C语言程序——歌曲排行榜
  8. servlet工作流程
  9. 费马,solovay-staassen,米勒拉宾素性检验方法python实现与比较
  10. 灰度发布、蓝绿发布、滚动发布