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

【编程语言】深度解构编程语言核心:从二进制底层到多语言数据类型全景图

在编程的世界里,无论你使用的是哪种高级语言,底层处理的永远是数字和字节。理解数据在内存中的存储方式以及不同语言之间的差异。

一、 计算机是如何存储数字的?

计算机本质上是一个巨大的“开关”集合,每个开关只有 0 和 1 两种状态。

1. 位与字节

  • Bit(位):计算机最小的存储单位,只能表示 0 或 1。
  • Byte(字节):计算机存储的基本计量单位。1 Byte = 8 Bits

2. 负数的艺术:原码、反码与补码

计算机为了简化硬件电路(让减法也能通过加法器完成),引入了补码。

  • 原码:最高位为符号位(0正1负),其余位表示数值。
  • 反码:正数同原码;负数符号位不变,数值位按位取反。
  • 补码正数同原码;负数在反码的基础上 +1

案例演示(以 8 位字符为例):
假设我们要表示一个负数:

编码类型二进制表示说明
原码10101011最高位 1 表示负数
反码11010100符号位不变,其余取反
补码11010101反码 + 1(计算机真实存储格式)

二、 Java:严谨的跨平台标准

Java 的设计初衷是“一次编写,到处运行”,因此它的基本数据类型大小在所有平台上都是固定的。

1. 整数的四种表达形式

在代码中,你可以通过前缀快速定义不同进制的整数:

  • 二进制:以0b0B开头。
  • 八进制:以0开头。
  • 十六进制:以0x0X开头。
  • 十进制:默认形式。

2. 八大基本数据类型

类型分类类型字节取值范围
整型byte1−27-2^727~27−12^7-1271(-128 ~ 127)
short2−215-2^{15}215~215−12^{15}-12151
int4−231-2^{31}231~231−12^{31}-12311(约±21亿,默认)
long8−263-2^{63}263~263−12^{63}-12631
浮点型float4单精度
double8双精度(默认)
字符型char2Unicode 字符
布尔型boolean-只有true/false

三、 C / C++:追求极致效率与底层控制

C/C++ 与 Java 最大的不同在于:其类型大小可能随编译器和操作系统位数的改变而改变

1. C 语言:硬件的延伸

在 C 语言中,int的大小通常是机器的字长(16位系统下是2字节,32/64位系统下通常是4字节)。

  • 符号修饰符unsigned(无符号,仅正数,范围翻倍)和signed(有符号)。
  • 精度差异long double在 C 中可以达到 16 字节,提供极高的浮点精度。

2. C++:更丰富的扩展

C++ 继承了 C 的特性,并引入了wchar_t(宽字符)来处理多语言字符集。

类型常用字节数备注
char1存储 ASCII
int4随系统变化
long long8C++11 后标准化的 64 位整数
long double8-16高精度浮点

四、 动态语言:Python 3 与 JavaScript

对于 Python 和 JS 开发者来说,内存管理和类型声明被隐藏在了引擎底层。

1. Python 3:万物皆对象

Python 的变量不需要声明类型。变量只是一个标签,指向内存中的对象。

  • 核心类型:Number (int, float, bool, complex), String, List, Tuple, Set, Dictionary。
  • 深度特性:Python 的int无限精度的,只要内存够,它可以表示任意大的数字。

2. JavaScript:动态与弱类型

JS 使用var,let, 或const声明变量,类型在运行时确定。

  • Number 类型:JS 不区分整数和浮点数,所有数字统一使用 64 位浮点数存储。
  • 特殊对象:数组(Array)和对象(Object)在 JS 中极其灵活。

五、 主流语言数据类型大比较

1. 静态 vs 动态

  • 静态语言 (Java, C, C++):编译时检查类型。优点是执行效率极高,适合大型工程和底层系统。
  • 动态语言 (JS, Python):运行时检查类型。优点是开发效率快、灵活性高,但运行开销相对较大。

2. 内存与平台依赖性

特性C / C++JavaPython / JS
平台影响受编译器/系统位数影响完全不受影响屏蔽底层细节
内存消耗极小,精准控制较大(对象头开销)最大(一切皆对象)
int 大小2 或 4 字节4 字节动态调整 (Python)
char 大小1 字节2 字节 (Unicode)统一为 String

注意:Java 的char是 2 字节,而 C 的char是 1 字节。这是因为 Java 天生支持国际化,而 C 语言诞生之初主要面向 ASCII 字符集。


https://blog.csdn.net/dazhongyue/article/details/77835117?spm=1001.2014.3001.5502

http://www.jsqmd.com/news/749873/

相关文章:

  • 具身智能(42):Holo Motion开源模型
  • 如何彻底解决微信消息撤回困扰:Mac用户的终极消息保护方案
  • 3步解密:微信聊天记录恢复的终极解决方案
  • HPH核心构造一探究竟!看完秒变专家懂均质
  • 如何让老旧电视重获新生:MyTV-Android原生电视直播应用完全指南
  • OpenAI参与,重卷ImageNet:终于把FID做成训练
  • 自主AI代理的监管挑战与欧盟AI法案解析
  • 第六周周报
  • 从零开始的指针探索之旅1(C语言)
  • 瑞祥商联卡变现攻略:一分钟了解最佳平台选择! - 团团收购物卡回收
  • 8步完全指南:LinkSwift网盘直链下载助手技术深度解析与实战应用
  • 5月江西武功山高铁三天游推荐:武功山高铁3日纯玩团 - 佳天下国旅
  • 华岐热镀锌管、衬塑管-四川盛世钢联国际贸易有限公司 - 四川盛世钢联营销中心
  • AD9361数据通道带宽瓶颈全解析:从PC到芯片,你的SDR系统到底卡在哪一步?
  • WarcraftHelper终极配置指南:让你的魔兽争霸3焕发新生
  • DLSS Swapper完整指南:三步实现游戏性能免费提升,智能管理DLSS版本
  • 魔兽争霸3兼容性修复与性能优化终极指南:3步配置完整解决方案
  • 3个颠覆性技巧:用开源神器Windows Cleaner终结C盘爆红噩梦
  • WarcraftHelper终极配置指南:5步彻底优化魔兽争霸3游戏体验
  • XUnity AutoTranslator:打破语言障碍的Unity游戏实时翻译终极指南
  • 涡街超声波流量计制造企业有哪些?哪家质量好、机器耐用、价格便宜、口碑好! - 品牌推荐大师1
  • STM32F103C8T6驱动DM542步进电机:从CubeMX配置到按键控制的全流程避坑指南
  • 3步极速汉化Degrees of Lewdity:新手零失败完全指南
  • 哔哩下载姬DownKyi:3个技巧让你轻松获取B站高清视频
  • AI道德推理:从技术实现到工程实践
  • 算法综合技术在LTE基带DFT硬件加速器设计中的应用
  • 为什么92%的Python微调项目失败?:揭秘LLaMA/ChatGLM/Qwen微调中被忽略的5个数据预处理致命细节
  • 日语大语言模型资源库:一站式导航与实战应用指南
  • 5步让你的老旧电视重获新生:MyTV-Android原生电视直播应用完整指南
  • 2026年深圳住家保姆靠谱吗,冠领月嫂口碑如何 - mypinpai