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相关推荐

  1. int 为什么是2147483647_现在的C语言编辑器里的int范围为什么是-2147483648~2147483647...

    下面是引用百度文库的一段话: "这得从二进制的原码说起: 如果以最高位为符号位,二进制原码最大为0111111111111111=215-1=32767 最小为111111111111111 ...

  2. 现在的C语言编辑器里的int范围为什么是-2147483648~2147483647

    下面是引用百度文库的一段话: "这得从二进制的原码说起: 如果以最高位为符号位,二进制原码最大为0111111111111111=215-1=32767 最小为111111111111111 ...

  3. int 为什么是2147483647_「2147483647」当int类型超出了[-2147483648,2147483647]会发生什么? - seo实验室...

    2147483647 当int超超出范围,编译器会报错吧?.... 答案是不会(看编译器怎么处理),在vs环境中,当输入下面的代码: int a = 2147483647; int b = 21474 ...

  4. 当int类型超出了[-2147483648,2147483647]会发生什么?

    当int超超出范围,编译器会报错吧?.... 答案是不会(看编译器怎么处理),在vs环境中,当输入下面的代码: int a = 2147483647;int b = 2147483648;int d ...

  5. c int最小值的宏_C语言宏定义的妙用!用完软硬件效率蹭蹭涨!

    1 概述 在工程规模较小,不是很复杂,与硬件结合紧密,要求移植性的时候,可采用宏定义简化编程,增强程序可读性. 当宏作为常量使用时,C程序员习惯在名字中只使用大写字母.但是并没有如何将用于其他目的的宏 ...

  6. SQL Server报错:Arithmetic overflow error converting expression to data type int.

    一.问题描述 sql server(sql dw)查询一张表数据个数,使用count报错 select count(*) from test.test_t; 然后报错: SQL 错误 [8115] [ ...

  7. C和C++安全编码笔记:整数安全

    5.1 整数安全导论:整数由包括0的自然数(0, 1, 2, 3, -)和非零自然数的负数(-1, -2, -3, -)构成. 5.2 整数数据类型:整数类型提供了整数数学集合的一个有限子集的模型.一 ...

  8. MySQL 支持的数据类型

    1.数值类型 MySQL 支持所有标准 SQL 中的数值类型,其中包括严格数值类型(integer.smallint.decimal.numeric),以及近似数值数据类型(float.real.do ...

  9. [转]列式数据库之infobright以及架构

    文章来源:http://www.cnblogs.com/inmanhust/tag/infobright/ 列式数据库之infobright 年前听过Sybase中国区副总裁的关于列式数据库的讲座之后 ...

最新文章

  1. beats 耳机 android,Beats耳机app
  2. 手把手教你写Linux I2C设备驱动
  3. word中 有注释标签吗_如何在Word中注释图像
  4. 监控系统简介(二):使用 App Metrics 在 ASP.NET Web API 中记录指标
  5. 解决swiper-slide在ion-slide-box不滑动的问题(暂且这么描述)
  6. 知识点滴:持久层,DAO,API,DAL,BLL,DLL,csproj,sln
  7. 文本分类的一种对抗训练方法
  8. mysql 报错 Specified key was too long; max key length is 767 bytes,开启系统变量:innodb_large_prefix
  9. 阶梯式的岗位技术培训认证体系
  10. turtle生成二叉树
  11. [转]使用xcode4 workspace 多个project协同工作
  12. Mac 输入法自动切换,代码编辑器中文状态下使用英文标点
  13. matlab newton插值法,matlab中newton插值法
  14. 2020.04 总结分享
  15. Exception evaluating SpringEL expression: ***错误的一个解决办法
  16. 2020-12 补丁日: 微软多个高危漏洞通告
  17. win7系统(64/32位)安装office2010时提示需要msxml6.10.1129,问题的解决记录
  18. 使用Python进行并发编程
  19. 【复盘】2022年度复盘
  20. ar71xx php-fpm,ar71xx和ar93xx平台所有8M固件!!nwan,aria2,qos,samba,tr,cpulimit-ng,等等...

热门文章

  1. Android studio连接MySQL并完成简单的登录注册功能
  2. Spyder 快捷键大全(转)
  3. 第八届“图灵杯”NEUQ-ACM程序设计竞赛个人赛
  4. LeetCode 1024 视频拼接
  5. VS studio msvc | 堆栈默认值 烫屯葺 0xCC、0xCD、0xFD、0xDD
  6. 3D修复版《泰坦尼克》2012上映 纪念沉没百年
  7. Hadoop之MapReduce基本简介
  8. angular 模板引用变量 #变量名
  9. 电脑有哪些常用快捷键?70个电脑常用的快捷键大全
  10. 微信支付API v2与v3的区别