int类型的取值范围(为什么负数比正数表示的范围多一位)

int为4个字节:1字节=8位,所以int为32位在计算机中存储的二进制位数。

如果没有符号位的话: 就是32位:表示数的范围为2的32次方(可以举例数字就明白了).

最大的整数为:2的32次方-1。

就是这么大:

unsigned int 0~4294967295

如果有符号位的话,需要去除一个符号位,正数最大为:2的31次方-1 ,负数最小为:-2的31次方


至于为什么是-2的31次方,是因为负数计算的补吗问题

这是由二进制补码的性质决定的。

一个二进制有符号数的补码,所能存储的数的范围是有负号的一半,无负号的一半,由于0占了一位,所以正数比负数少一个。

+0:0000 0000 | 0000 0000 | 0000 0000 | 0000 0000

-0: 1000 0000 | 0000 0000 | 0000 0000 | 0000 0000

+0和-0,都是表示0,那么我们就没有必要用两个数共同来表示0,我们用+0表示0,用-0取表示其他的数,上面我们也发现,-0其实表示的是-2³¹,所以这也是一种规定,可以让我们对资源有一个更充分的利用。


所以就是这么大:

int -2147483648~2147483647


参考文章:
int类型的数值表示数的范围
int类型为什么负数比正数表示的范围多一位

相关推荐
2501_9403152621 分钟前
航电oj:首字母变大写
开发语言·c++·算法
lhxcc_fly38 分钟前
手撕简易版的智能指针
c++·智能指针实现
浒畔居1 小时前
泛型编程与STL设计思想
开发语言·c++·算法
Fcy6481 小时前
C++ 异常详解
开发语言·c++·异常
机器视觉知识推荐、就业指导1 小时前
Qt 和 C++,是不是应该叫 Q++ 了?
开发语言·c++·qt
m0_748229992 小时前
ThinkPHP快速入门:从零到实战
c语言·开发语言·数据库·学习
liu****2 小时前
三.Qt图形界面开发完全指南:从入门到掌握常用控件
开发语言·c++·qt
小龙报2 小时前
【C语言进阶数据结构与算法】单链表综合练习:1.删除链表中等于给定值 val 的所有节点 2.反转链表 3.链表中间节点
c语言·开发语言·数据结构·c++·算法·链表·visual studio
EmbedLinX2 小时前
Linux之内存管理
linux·服务器·c语言·c++
南岩亦凛汀3 小时前
快速上手Ultimate++的编译链接和配置
c++·gui·开源框架