二进制 正负数加减法 计算INT_MIN - 1=INT_MAX
首先得知道,在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相关推荐
- 二进制正负数的表示法
数在数字电路中的二进制表示形式成为机器数,在通常的算术运算中,用"+"."-"表示正数和负数,而数字电路不识别"+","-&quo ...
- 计算机系统基础知识——详解二进制正负数及补码设计
前言:关于二进制数的补码反码等各种码,上学时候只学会了死记硬背却还是一头雾水,不懂这样设计的意义.所以总是隔很多时间后还是记不住,今天就尝试用自己的理解解释下正负数以及补码的设计,如果有不对的地方或者 ...
- 二进制正负数转换和移位的规则详解
1.转换规则 二进制整数都是以补码的形式出现的 正数的原码.反码.补码都相同 负数的反码就是正数的原码先把最高位变为1然后其余的位取反 负数的补码就是该负数的反码加1. 2.二进制的移位规则 < ...
- 二进制正负数及其表示
- 计算机底层的二进制表达——正负数与二进制转换方法及代码
以下均是以64位计算机为例,故int类型是4字节,即32位二进制数. 文章目录 1 十进制数转为二进制 1.1 正数的二进制 1.2 负数的二进制 2 正负数与原码.反码.补码 2.1 原码 2.2 ...
- 第三讲,我们来谈谈:“二进制的负数”
首先,你要记住并且不要问为什么:"在计算机中,所有的数据,最终都是使用二进制数表达的." 还要记住并且不要问为什么:"在计算机中,正数是直接用原码来表示和存储的.&quo ...
- 计算机中的正负数表示
计算机中的正负数表示 在32位系统中,int类型占4个字节,一共是32个2进制位,int类型的首位是符号位,0代表正数,1代表负数,int的最大值是0x7fffffff(即除了最高的1Bit其他31位 ...
- 正负数在计算机中的表示(原码反码补码)及位运算
负数在现代计算机里一般用补码表示(正数也是) 正数补码就是它的原码 负数补码: 最高位是符号位,其余位为对应整数的原码取反再+1 如:1000 0000还原为原码:最高位是1,表示负数,剩余的各位取反 ...
- JAVA入门-024(int的正负数)
int的正负数I int的正负数 int的正负数 首先要了解什么是二进制的反码和补码. 以下为一个int类型的二进制数字: 00000000 00000000 00000000 00101101 他所 ...
最新文章
- 使用UEFI模式安装win10中的格式化磁盘问题
- Nginx最新版安装教程(Windows+Linux)
- 高级数据结构 线段树
- linux vi 是目录,linux基本操作之目录、vi等
- pca图解读_干货!手把手一步一步解读PCA分析,逃学博士尽力了!
- 转:upload.parseRequest为空
- Bundler和Minifier Visual Studio扩展
- JS执行一次任务与定期任务与清除执行
- hive下载安装与配置
- 计算机软件服务可以自开专票,可以自开专票的小规模纳税人到底有几类?
- 计算机用户名uz,Dnuznq全国计算机二级考试vb试题.doc
- Knowledge Tracing 资源帖2
- UiPath Excel 数据筛选修改
- ubuntu编辑只读文件_Ubuntu linux vim 修改只读文件 修改Apache2端口号 ports.conf
- wait和notify方法
- 微信小程序 - 图像加载时渐隐淡入效果(image)
- RFC8402 Segment Routing Architecture 翻译
- ¥符号在安卓上显示只有一个横杠的问题
- 今日头条极速版自动脚本_今日头条极速版多开软件,这个工具造福广大自媒体人!...
- Runnable、Callable、Future、RunnableFuture 和 FuturTask 到底是些啥,到底有啥关系?