int类型变量表示范围的计算原理

1. 了解

在这里插入图片描述
        通常情况下int类型变量占4个字节,1个字节有8位,每位都有0和1两种状态,所以int类型变量一共可以表示 2^32 种状态(即可以表示 2^8 个数据值)。

2. 为什么通常情况下int类型整数的取值范围是-2147483648 ~ 2147483647

07:36开始
进一步理解
        问:通过上述两个视频可以知道int类型可表示的正整数范围是1 ~ 2^31 - 1,将此逻辑类比到负整数,那么int类型可以表示的整数范围不应该是 -2^31 + 1 ~ 2^31 -1么?既然2^31 这个值取不到,为什么-2^31可以取到?
        答:在计算机科学中,最常用的有符号整数表示方法是二补数表示法。这种方法不仅解决了正负数的表示问题,还简化了二进制加减运算。我们具体来看一下这种表示法:
        1. 正数:正数的二进制表示与无符号数相同。比如,3用3位二进制表示是011。
        2. 负数:负数的表示是通过正数的补码实现的。负数的补码计算方法是:将该数的绝对值的二进制表示取反,然后加1。例如:
        ① 取反:先将3的二进制表示011取反,变成100。
        ② 加1:100加1得到101,因此 -3的二补数表示就是101。
        对于一个32位的整数变量,它的最高位(也称符号位)表示符号,0表示正,1表示负。其余31位用于表示数值。接下来回到刚刚提出的问题:
        1. 正数范围(包含0):符号位为0,其余31位可以表示从000…000(31个0)到011…111(31个1)的值。对应的十进制范围是从0到2^31 - 1。
        2. 负数范围:符号位为1,其余31位可以表示从100…000(31个0)到111…111(31个1)的值。其中,100…000(31个0)的二补数表示-2^31 ,对应的十进制值是 -2^31。 111…111(31个1)的二补数表示 -1,对应的十进制值是 -1。
        正数范围:1 ~ 2^31 - 1;0;负数范围:-1 ~ -2^31,总数依然是 2^32 种不同的状态。因此通常情况下int类型整数的取值范围是-2147483648 ~ 2147483647 (即 -2^31 ~ 2^31 - 1)

3. int类型究竟占几个字节

64位 int 占几个字节_整数类型 int、long和long long的区别
64位 int 占几个字节_【面试】int 占几个字节?
32位机和64位机的区别及基本数据类型占字节数
C语言整数类型(含取值范围和长度)
int类型究竟占几个字节
不同平台下int类型、指针类型的数据大小
Java之sizeof()问题
python中int类型变量可以存储任意大小的整数

总结:

  1. C和C++ 的数据类型大小会受到编译标准、编译器、操作系统位数等的影响。
  2. Java 和 Python 的数据类型大小由语言规范或解释器实现决定,不受编译器、操作系统位数等因素的影响。
  3. 这种设计差异的主要原因是:C和C++是系统编程语言,通常需要直接与硬件交互,因此数据类型的大小会因底层环境而异;而Java和Python是高级编程语言,抽象程度更高,设计目标是跨平台一致性。

4. 推荐

再次推荐
第三部分问题诞生起源

相关推荐

  1. c_各个unsigned intint取值范围

    2024-07-12 01:56:03       22 阅读
  2. c# _表示未使用变量引用

    2024-07-12 01:56:03       58 阅读
  3. C语言中变量范围规定方法

    2024-07-12 01:56:03       35 阅读
  4. C语言如何限定外部变量使⽤范围

    2024-07-12 01:56:03       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-12 01:56:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-12 01:56:03       71 阅读
  3. 在Django里面运行非项目文件

    2024-07-12 01:56:03       58 阅读
  4. Python语言-面向对象

    2024-07-12 01:56:03       69 阅读

热门阅读

  1. k8s 部署RuoYi-Vue-Plus之mysql搭建

    2024-07-12 01:56:03       23 阅读
  2. 大数据面试题之Hudi(1)

    2024-07-12 01:56:03       18 阅读
  3. ES6 Iterator 与 for...of 循环(五)

    2024-07-12 01:56:03       23 阅读
  4. 对素数的一种新理解

    2024-07-12 01:56:03       22 阅读
  5. 力扣 454四数相加

    2024-07-12 01:56:03       21 阅读
  6. 十大排序算法(慢慢更新)

    2024-07-12 01:56:03       23 阅读
  7. 简谈设计模式之建造者模式

    2024-07-12 01:56:03       18 阅读
  8. 力扣题解(乘积最大子数组)

    2024-07-12 01:56:03       23 阅读
  9. synchronized (userAccount.intern())知识点

    2024-07-12 01:56:03       23 阅读
  10. 网络协议与标准

    2024-07-12 01:56:03       24 阅读
  11. Haproxy搭建Web群集

    2024-07-12 01:56:03       23 阅读
  12. 24.6.30

    24.6.30

    2024-07-12 01:56:03      18 阅读