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