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. EXPDP 时ORA-27054 问题处置
  2. html怎么将旋转定位在中心,html – 定位旋转的div元素
  3. 移位运算[c][code]
  4. linux c程序中获取shell脚本输出
  5. k8s单节点部署(master ,node部分)
  6. java实现jsonscheme_java – jsonschema和日期类型
  7. 使用GlassFish 3.1.2.2和Primefaces 3.4的JDBC领域和基于表单的身份验证
  8. python dict初始化大小_在Python中初始化/创建/填充Dict的Dict
  9. python web应用_如何使用Python将通知发送到Web应用
  10. centos下添加windows启动项
  11. volatile详解
  12. vm内核参数之缓存回收drop_caches
  13. 【蓝桥杯】基础练习 字母图形
  14. 程序员开发常用英语词汇汇总,满满的干货!
  15. [hdu6148][Valley Numer]
  16. 计算机控制矢量网络分析仪,完全独立的HF(短波)软件定义收发器和矢量网络分析仪设计...
  17. charles windows 和苹果手机进行连接抓包
  18. unzip:unzip解压文件到指定目录
  19. BFS模版题----水缸灌水(c++)
  20. python编写一个函数判断一个数是否为素数是则返回yes_编写函数,判断一个整数是否为素数,并编写主程序调用该函数。_学小易找答案...

热门文章

  1. 智能合约的编译与ABI
  2. 寒假有效复习,这四份考研攻略你需要收下!
  3. 5G 700M频段采用的双工模式是
  4. js将北京时间转换为当前时区的时间
  5. 《花雕学AI》22:一种让AI模拟虚拟角色方法,足以更多创造力的ChatGPT角色扮演
  6. 联想小新air15 2022款 评测
  7. 电脑配置内网和外网可同时使用
  8. 网上开店流程及注意事项
  9. (附源码)ssm生鲜超市管理系统的设计与实现 毕业设计261635
  10. [vscode] Flake8 取消每段代码长度限制