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

相关推荐
卢锡荣23 分钟前
单芯通吃,盲插标杆 —— 乐得瑞 LDR6020,Type‑C 全场景互联 “智慧芯”
c语言·开发语言·计算机外设
AI科技星1 小时前
《数学公理体系·第三部·数术几何》(2026 年版)
c语言·开发语言·线性代数·算法·矩阵·量子计算·agi
小小编程路1 小时前
C++ 多线程与并发
java·jvm·c++
kkeeper~1 小时前
0基础C语言积跬步之字符函数与字符串函数(上)
c语言·开发语言
程序leo源2 小时前
Qt窗口详解
开发语言·数据库·c++·qt·青少年编程·c#
東隅已逝,桑榆非晚2 小时前
字符函数和字符串函数
c语言·笔记
zh_xuan3 小时前
解决VS Code 控制台中文乱码
c++·vscode·乱码
郭涤生3 小时前
飞凌 RK3588 开发板同显 / 异显模式切换
c++·rk3588
计算机安禾3 小时前
【c++面向对象编程】第38篇:设计原则(二):里氏替换、接口隔离与依赖倒置
开发语言·c++
code_whiter4 小时前
C++1进阶(继承)
开发语言·c++