int最小值为何是-2147483648,而不是-2147483647
int最小值为何是-2147483648,而不是-2147483647
首先这是针对int占4个字节的情况。
最高位是符号位,1表示是负数,0表示是非负数。
0111 1111 1111 1111,这是int_max,可能我们就会想为什么最小值不是-int_max呢?
因为计算机是以补码的形式来存储数字的,不管-0还是+0,补码都是0000 0000 0000 0000,
这就造成了没有任何一个数的补码是1000 0000 0000 0000,所以就可以把这个补码用来存储一个数(不要浪费资源嘛),就规定用它来存储-(int_max+1),所以int最小值是-2147483648,即 1000 0000 0000 0000。
【拓展】:
因此我们也发现,2147483647 + 1会溢出变成-2147483648
因为2147483647 补码是:0111 1111 1111 1111 1111 1111 1111 1111
加1之后补码就变成了:1000 0000 0000 0000 0000 0000 0000 0000
这正好就是-2147483648的补码
所以在int中用于正数表示的有31位,能表示的数就是2^31 = 2147483648个
加上0之后的话,最大值就只能到2147483647
同理负数也有31位的空间去表示
只能表示2147483648这么多个数,因为-0不需要表示,所以负数就多出一个数可以表示
就用这个多出来的表示-2147483648
所以java中int能表示的最大值就是2147483647
能表示的最小值是-2147483648
————————————————
版权声明:本文为CSDN博主「AAS48」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_40163242/article/details/98056900
int最小值为何是-2147483648,而不是-2147483647相关推荐
- int 为什么是2147483647_现在的C语言编辑器里的int范围为什么是-2147483648~2147483647...
下面是引用百度文库的一段话: "这得从二进制的原码说起: 如果以最高位为符号位,二进制原码最大为0111111111111111=215-1=32767 最小为111111111111111 ...
- 现在的C语言编辑器里的int范围为什么是-2147483648~2147483647
下面是引用百度文库的一段话: "这得从二进制的原码说起: 如果以最高位为符号位,二进制原码最大为0111111111111111=215-1=32767 最小为111111111111111 ...
- int 为什么是2147483647_「2147483647」当int类型超出了[-2147483648,2147483647]会发生什么? - seo实验室...
2147483647 当int超超出范围,编译器会报错吧?.... 答案是不会(看编译器怎么处理),在vs环境中,当输入下面的代码: int a = 2147483647; int b = 21474 ...
- 当int类型超出了[-2147483648,2147483647]会发生什么?
当int超超出范围,编译器会报错吧?.... 答案是不会(看编译器怎么处理),在vs环境中,当输入下面的代码: int a = 2147483647;int b = 2147483648;int d ...
- c int最小值的宏_C语言宏定义的妙用!用完软硬件效率蹭蹭涨!
1 概述 在工程规模较小,不是很复杂,与硬件结合紧密,要求移植性的时候,可采用宏定义简化编程,增强程序可读性. 当宏作为常量使用时,C程序员习惯在名字中只使用大写字母.但是并没有如何将用于其他目的的宏 ...
- SQL Server报错:Arithmetic overflow error converting expression to data type int.
一.问题描述 sql server(sql dw)查询一张表数据个数,使用count报错 select count(*) from test.test_t; 然后报错: SQL 错误 [8115] [ ...
- C和C++安全编码笔记:整数安全
5.1 整数安全导论:整数由包括0的自然数(0, 1, 2, 3, -)和非零自然数的负数(-1, -2, -3, -)构成. 5.2 整数数据类型:整数类型提供了整数数学集合的一个有限子集的模型.一 ...
- MySQL 支持的数据类型
1.数值类型 MySQL 支持所有标准 SQL 中的数值类型,其中包括严格数值类型(integer.smallint.decimal.numeric),以及近似数值数据类型(float.real.do ...
- [转]列式数据库之infobright以及架构
文章来源:http://www.cnblogs.com/inmanhust/tag/infobright/ 列式数据库之infobright 年前听过Sybase中国区副总裁的关于列式数据库的讲座之后 ...
最新文章
- beats 耳机 android,Beats耳机app
- 手把手教你写Linux I2C设备驱动
- word中 有注释标签吗_如何在Word中注释图像
- 监控系统简介(二):使用 App Metrics 在 ASP.NET Web API 中记录指标
- 解决swiper-slide在ion-slide-box不滑动的问题(暂且这么描述)
- 知识点滴:持久层,DAO,API,DAL,BLL,DLL,csproj,sln
- 文本分类的一种对抗训练方法
- mysql 报错 Specified key was too long; max key length is 767 bytes,开启系统变量:innodb_large_prefix
- 阶梯式的岗位技术培训认证体系
- turtle生成二叉树
- [转]使用xcode4 workspace 多个project协同工作
- Mac 输入法自动切换,代码编辑器中文状态下使用英文标点
- matlab newton插值法,matlab中newton插值法
- 2020.04 总结分享
- Exception evaluating SpringEL expression: ***错误的一个解决办法
- 2020-12 补丁日: 微软多个高危漏洞通告
- win7系统(64/32位)安装office2010时提示需要msxml6.10.1129,问题的解决记录
- 使用Python进行并发编程
- 【复盘】2022年度复盘
- ar71xx php-fpm,ar71xx和ar93xx平台所有8M固件!!nwan,aria2,qos,samba,tr,cpulimit-ng,等等...