首先得知道,在java中,int类型占4个字节,1个字节等于8位二进制,所以int类型32位,范围是-2147483648到2147483647,

因为1000 0000, 0000 0000, 0000 0000, 0000 0000这个是-2^31=-2147483648,所以负数多一个。

然后,因为计算机CPU的运算器中只有加法器,所以减法要转化成加法来计算,所以引入了补码。

补码可以解决两同号数相减或两异号数相加的问题。

举个例子,A表示十进制数“+6”,B表示十进制数“-8”,如果把这两个数的原码直接相加,那么

0000 0110

+ 1000 1000

————————

1000 1110

结果为-14,很明显是错的。

如果把这两个数的补码相加,那么

0000 0110     “+6”补码

+  1111 1000      “-8”补码

————————

1111 1110       “-2”补码

结果是-2的补码,结果是正确的。

要理解上面的补码运算,得先知道一下3点:

1、正数的原码 反码 补码完全相同。

2、负数的反码是将原码按位取反,补码=反码+1。

3、补码转原码和原码转补码的方法是一样的。

最后根据上面的计算方法,计算INT_MIN - 1的结果,看是不是等于 INT_MAX。

1000 0000, 0000 0000, 0000 0000, 0000 0000     “-2147483648”补码

+   1111 1111,1111 1111, 1111 1111,1111 1111       “-1”补码

————————————————————————

1 0111 1111,1111 1111, 1111 1111,1111 1111

很明显,运算溢出了。舍去溢出的最高位,最后运算的结果是0111 1111,1111 1111, 1111 1111,1111 1111。

又因为正数的原码 反码 补码完全相同。所以0111 1111,1111 1111, 1111 1111,1111 1111就是“2147483647”补码、源码= INT_MAX。

所以,综上所述:INT_MIN - 1的结果等于 INT_MAX。

二进制 正负数加减法 计算INT_MIN - 1=INT_MAX相关推荐

  1. 二进制正负数的表示法

    数在数字电路中的二进制表示形式成为机器数,在通常的算术运算中,用"+"."-"表示正数和负数,而数字电路不识别"+","-&quo ...

  2. 计算机系统基础知识——详解二进制正负数及补码设计

    前言:关于二进制数的补码反码等各种码,上学时候只学会了死记硬背却还是一头雾水,不懂这样设计的意义.所以总是隔很多时间后还是记不住,今天就尝试用自己的理解解释下正负数以及补码的设计,如果有不对的地方或者 ...

  3. 二进制正负数转换和移位的规则详解

    1.转换规则 二进制整数都是以补码的形式出现的 正数的原码.反码.补码都相同 负数的反码就是正数的原码先把最高位变为1然后其余的位取反 负数的补码就是该负数的反码加1. 2.二进制的移位规则 < ...

  4. 二进制正负数及其表示

  5. 计算机底层的二进制表达——正负数与二进制转换方法及代码

    以下均是以64位计算机为例,故int类型是4字节,即32位二进制数. 文章目录 1 十进制数转为二进制 1.1 正数的二进制 1.2 负数的二进制 2 正负数与原码.反码.补码 2.1 原码 2.2 ...

  6. 第三讲,我们来谈谈:“二进制的负数”

    首先,你要记住并且不要问为什么:"在计算机中,所有的数据,最终都是使用二进制数表达的." 还要记住并且不要问为什么:"在计算机中,正数是直接用原码来表示和存储的.&quo ...

  7. 计算机中的正负数表示

    计算机中的正负数表示 在32位系统中,int类型占4个字节,一共是32个2进制位,int类型的首位是符号位,0代表正数,1代表负数,int的最大值是0x7fffffff(即除了最高的1Bit其他31位 ...

  8. 正负数在计算机中的表示(原码反码补码)及位运算

    负数在现代计算机里一般用补码表示(正数也是) 正数补码就是它的原码 负数补码: 最高位是符号位,其余位为对应整数的原码取反再+1 如:1000 0000还原为原码:最高位是1,表示负数,剩余的各位取反 ...

  9. JAVA入门-024(int的正负数)

    int的正负数I int的正负数 int的正负数 首先要了解什么是二进制的反码和补码. 以下为一个int类型的二进制数字: 00000000 00000000 00000000 00101101 他所 ...

最新文章

  1. 使用UEFI模式安装win10中的格式化磁盘问题
  2. Nginx最新版安装教程(Windows+Linux)
  3. 高级数据结构 线段树
  4. linux vi 是目录,linux基本操作之目录、vi等
  5. pca图解读_干货!手把手一步一步解读PCA分析,逃学博士尽力了!
  6. 转:upload.parseRequest为空
  7. Bundler和Minifier Visual Studio扩展
  8. JS执行一次任务与定期任务与清除执行
  9. hive下载安装与配置
  10. 计算机软件服务可以自开专票,可以自开专票的小规模纳税人到底有几类?
  11. 计算机用户名uz,Dnuznq全国计算机二级考试vb试题.doc
  12. Knowledge Tracing 资源帖2
  13. UiPath Excel 数据筛选修改
  14. ubuntu编辑只读文件_Ubuntu linux vim 修改只读文件 修改Apache2端口号 ports.conf
  15. wait和notify方法
  16. 微信小程序 - 图像加载时渐隐淡入效果(image)
  17. RFC8402 Segment Routing Architecture 翻译
  18. ¥符号在安卓上显示只有一个横杠的问题
  19. 今日头条极速版自动脚本_今日头条极速版多开软件,这个工具造福广大自媒体人!...
  20. Runnable、Callable、Future、RunnableFuture 和 FuturTask 到底是些啥,到底有啥关系?

热门文章

  1. 第三天:最大公因数和最小公倍数(c语言)
  2. 英语论文夹注以及文献格式
  3. iphone11pro市场价_iPhone11 Pro首发真机体验:花这一万元真的值吗?
  4. linux系统调用的来龙去脉(上)
  5. 操作系统武功修炼心法
  6. IBM展示“世界最小电脑”成本只有10美分
  7. ACMer的独白(熟人勿评)
  8. Windows安装达梦数据库及初始化
  9. R2s便捷访问光猫设置
  10. Linux fdisk命令详解:给硬盘分区