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类型为什么负数比正数表示的范围多一位

相关推荐
念恒1230610 小时前
进程控制---自定义Shell
linux·c语言
charlie11451419112 小时前
通用GUI编程技术——图形渲染实战(三十八)——顶点缓冲与输入布局:GPU的第一个三角形
开发语言·c++·学习·图形渲染·win32
程序员JerrySUN12 小时前
Jetson边缘嵌入式实战课程第二讲:JetPack 和 SDK Manager 是什么
c语言·开发语言·网络·udp·音视频
用户8055336980312 小时前
现代Qt开发教程(新手篇)1.10——进程
c++·qt
我不是懒洋洋12 小时前
布谷鸟过滤器:比布隆过滤器更优雅的判重方案
c语言·经验分享
忡黑梨12 小时前
eNSP_从直连到BGP全网互通
c语言·网络·数据结构·python·算法·网络安全
海参崴-12 小时前
C++ STL篇 AVL树的模拟实现
开发语言·c++
汉克老师12 小时前
GESP2025年6月认证C++五级( 第二部分判断题(1-10))
c++·贪心算法·分治算法·线性筛法·gesp5级·gesp五级
6Hzlia13 小时前
【Hot 100 刷题计划】 LeetCode 15. 三数之和 | C++ 排序+双指针
c++·算法·leetcode
vegetablesssss13 小时前
VTK切割图
c++·qt·vtk