当前位置: 首页 > 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. 推荐

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • RISC-V指令集架构详细组成
  • ASP.NET Core 使用Log4net
  • elasticSearch快速了解
  • shark云原生-日志体系-ECK
  • 基于前馈神经网络 FNN 实现股票单变量时间序列预测(PyTorch版)
  • 打卡第9天-----字符串
  • MySQL 条件函数/加密函数/转换函数
  • 从零开始学习嵌入式----Makefile工具
  • 论文 | Chain-of-Thought Prompting Elicits Reasoningin Large Language Models 思维链
  • 大数据学习之Spark基础
  • 【Linux】Windows平台使用gdb调试FFmpeg源码
  • 【C++】类中的六个默认成员函数(构造函数、析构函数、拷贝构造函数、复制重载函数等)
  • MySQL 数据库基础概念
  • 任务需求准确度量;高效计算任务调度;算力资源统一度量
  • 新火种AI|微软和苹果放弃OpenAI董事会观察员席位
  • 分享一款快速APP功能测试工具
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • Android框架之Volley
  • CNN 在图像分割中的简史:从 R-CNN 到 Mask R-CNN
  • Electron入门介绍
  • FineReport中如何实现自动滚屏效果
  • Iterator 和 for...of 循环
  • mysql外键的使用
  • vue 个人积累(使用工具,组件)
  • 成为一名优秀的Developer的书单
  • 给新手的新浪微博 SDK 集成教程【一】
  • 开源SQL-on-Hadoop系统一览
  • 普通函数和构造函数的区别
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 一天一个设计模式之JS实现——适配器模式
  • gunicorn工作原理
  • linux 淘宝开源监控工具tsar
  • 容器镜像
  • ​Redis 实现计数器和限速器的
  • ​埃文科技受邀出席2024 “数据要素×”生态大会​
  • #宝哥教你#查看jquery绑定的事件函数
  • (02)Unity使用在线AI大模型(调用Python)
  • (06)金属布线——为半导体注入生命的连接
  • (day 12)JavaScript学习笔记(数组3)
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (zt)最盛行的警世狂言(爆笑)
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (佳作)两轮平衡小车(原理图、PCB、程序源码、BOM等)
  • (生成器)yield与(迭代器)generator
  • (原创)可支持最大高度的NestedScrollView
  • (转)Linux NTP配置详解 (Network Time Protocol)
  • (自用)gtest单元测试
  • .libPaths()设置包加载目录
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .net MVC中使用angularJs刷新页面数据列表
  • .NET 直连SAP HANA数据库
  • .NET/C# 检测电脑上安装的 .NET Framework 的版本
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)