当前位置: 首页 > news >正文

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

文章目录

  • 1. 了解
  • 2. 为什么通常情况下int类型整数的取值范围是-2147483648 ~ 2147483647
  • 3. int类型究竟占几个字节
  • 4. 推荐

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. 推荐

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

http://www.lryc.cn/news/397875.html

相关文章:

  • STM32崩溃问题排查
  • CSS 【详解】样式选择器(含ID、类、标签、通配、属性、伪类、伪元素、Content属性、子代、后代、兄弟、相邻兄弟、交集、并集等选择器)
  • CMakeLists.txt编写思路
  • 红日靶场----(三)2.漏洞利用
  • LeetCode HOT100(三)滑动窗口
  • 数学系C++ 排序算法简述(八)
  • 记一下blender曲线阵列
  • Windows电脑安装Python结合内网穿透轻松搭建可公网访问私有网盘
  • react hooks antd 父组件取子组件form表单的值
  • 【ARMv8/v9 GIC 系列 1.7 -- GIC PPI | SPI | SGI | LPI 中断使能配置概述】
  • 大数据如何推动工业数字化发展?
  • 计算机网络浅谈—什么是 OSI 模型?
  • 浪潮服务器内存物理插槽位置
  • windows node降级到指定版本
  • EXSI 实用指南 2024 -编译环境 Mac OS 安装篇(一)
  • 断电的固态硬盘数据能放多久?
  • Neo4j安装
  • 基于Java+SpringMvc+Vue技术的就医管理系统设计与实现系统(源码+LW+部署讲解)
  • Transformer学习过程中常见的问题与解决方案 - Transformer教程
  • Linux进程间通信:匿名管道 命名管道
  • 【数据结构】(C语言):二叉搜索树(不使用递归)
  • Fastapi在docekr中进行部署之后,uvicorn占用的CPU非常高
  • Pandas数据可视化宝典:解锁图形绘制与样式自定义的奥秘
  • 2024前端面试真题【JS篇】
  • axios使用sm2加密数据后请求参数多了双引号解决方法
  • MybatisPlus 核心功能
  • vivado EQUIVALENT_DRIVER_OPT、EXCLUDE_PLACEMENT
  • docker也能提权??内网学习第6天 rsync未授权访问覆盖 sudo(cve-2021-3156)漏洞提权 polkit漏洞利用
  • TF卡病毒是什么?如何防范和应对?
  • window对象监听浏览器页签之间的切换状态;前端监听浏览器切换页签的触发时机