博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
int最大值+1为什么是-2147483648最小值-1为什么是2147483647
阅读量:4669 次
发布时间:2019-06-09

本文共 906 字,大约阅读时间需要 3 分钟。

今天一个新手学编程就问到这个问题,很多人第一次学编程肯定会遇到这个问题,大部分都知道是溢出之类的,用源码和补码就很容易说明

int i = -2147483648 ;这是不允许的 VS里报的错 error C4146 : 一元负运算符应用于无符号类型,结果仍为无符号类型错误,

那么我们就会想,如果非要用int存 -2147483648那么符号位和数据位共用, int的第一位二进制是符号位0是整数,1是负数

-2147483647 原码1111 1111 1111 1111 1111 1111 1111 1111

-2147483647-1=-2147483648;

由于cpu里面存的是补码计算

-2147483647  补码1000 0000  0000 0000 0000 0000 0000 0001

-1       补码1111 1111 1111 1111 1111 1111 1111 1111

得到-2147483648 补码1000 0000 0000 0000 0000 0000 0000 0000

-2147483648-1得到2147483647;

-2147483648 补码1000 0000 0000 0000 0000 0000 0000 0000

-1      补码1111 1111 1111 1111 1111 1111 1111 1111

得到     补码0111 1111 1111 1111 1111 1111 1111 1111

正好是2147483647 最大值

2147483647+1得到-2147483648;

2147483647 补码0111 1111 1111 1111 1111 1111 1111 1111

1      补码0000 0000 0000 0000 0000 0000 0000 0001

得到      补码1000 0000 0000 0000 0000 0000 0000 0000

正好是-2147483648最小值

 

转载于:https://www.cnblogs.com/zakers/p/6739708.html

你可能感兴趣的文章
Eclipse搭建springboot项目(六)全局异常
查看>>
Android 报错:error: too many padding sections on bottom border
查看>>
IOS开发 ios7适配
查看>>
1806. [NOIP2014]无线网路发射器选址
查看>>
根据指定的commit查找对应的log
查看>>
处理和引发事件的规范
查看>>
点击LinearLayout使用selector改变TextView字体颜色
查看>>
Markdown入门指南-指间阁
查看>>
Android Support Annotations
查看>>
JAVA设计模式之享元模式
查看>>
命令行添加删除tomcat服务
查看>>
myEclipse怎样将程序部署到tomcat(附录MyEclipse调试快捷键)
查看>>
Unity UGUI——UI基础,Canvas
查看>>
如果战斗机飞行员弹出,自动驾驶仪会接管飞机安全降落么?
查看>>
Windows Azure Azure 简介
查看>>
java字符串截取指定下标位置的字符串
查看>>
Ubuntu 14.04开启ssh服务
查看>>
格式化输出;while循环;运算符
查看>>
javascrip学习之 数据类型和变量
查看>>
免费的DNS服务器
查看>>