云计算百科
云计算领域专业知识百科平台

(学习笔记)2.1 信息存储(2.1.2 字数据大小)

文章目录

  • 线索栏
  • 笔记栏
    • 2.1.2 字数据大小
      • 1. 字长与虚拟地址空间
        • 1)定义
        • 2)核心影响
        • 3)32位 vs. 64位迁移
      • 2. C语言数据类型的大小(详见图2-3表格)
        • 1)大小依赖
        • 2)典型值总结
        • 3)符号性
      • 3. 可移植性与确定大小的类型
  • 总结栏

线索栏

  • 字长是什么?它决定了什么至关重要的系统参数?
  • 从32位向64位系统的迁移带来了什么根本性变化?虚拟地址空间的限制分别是什么?
  • C语言基本数据类型(如 int, long, 指针)的大小由什么决定?32位与64位程序有何典型差异?
  • 为什么C99标准要引入int32_t、int64_t这类固定大小的整数类型?
  • 大多数数据类型的“符号性”如何确定?char类型在此方面有何特殊性?
  • C语言中指针变量的大小是多少?
  • 单精度 (float) 和双精度 (double) 浮点数通常各占多少字节?

  • 笔记栏

    2.1.2 字数据大小

    核心概念:计算机的字长(Word Size)​ 是系统的一个基本参数,它定义了指针数据的标称大小,并深刻影响虚拟地址空间的大小和C语言中多种数据类型的大小。

    1. 字长与虚拟地址空间

    1)定义

    字长指明了指针数据的标称大小。

    2)核心影响

    (1)因为虚拟地址是用一个字来编码的,所以字长决定了虚拟地址空间的最大大小。 (2)对于字长为w位的机器,虚拟地址范围是0到2w-1, 程序最多可访问2w字节。

    3)32位 vs. 64位迁移

    (1)32位系统:虚拟地址空间限制为2的32(次方)字节 = 4 GB。 (2)64位系统:虚拟地址空间高达 2的64(次方)字节 = 16 EB(艾字节)。这是从大型机到智能手机的普遍趋势。 (3)向后兼容:大多数64位机器可以运行为32位编译的程序。

    2. C语言数据类型的大小(详见图2-3表格)

    在这里插入图片描述

    1)大小依赖

    数据类型的确切字节数依赖于程序是如何编译的(是编译为32位还是64位程序)。

    2)典型值总结

    (1)char: 1字节(可存储字符或小整数)。 (2)short: 2字节。 (3)int: 通常为4字节(即使在64位程序中)。 (4)long: 4字节(32位程序)​ 或 8字节(64位程序)。 (5)long long: 8字节。 (6)指针​ (char *等): 4字节(32位程序)​ 或 8字节(64位程序),即使用程序的全字长。 (7)float(单精度): 4字节。 (8)double(双精度): 8字节。

    3)符号性

    (1)大多数数据类型默认是有符号的。 (2)使用 unsigned关键字可声明为无符号类型(如 unsigned int)。 (3)例外:char的符号性未由C标准定义,取决于编译器和机器。为保证是有符号字节,应明确使用 signed char。

    3. 可移植性与确定大小的类型

    (1)问题:C标准只规定了数据类型的最小范围,未规定确切大小,导致程序在不同字长机器间移植可能出现问题(例如,过去许多程序错误地假设 int可以存储指针)。 (2)解决方案:ISO C99​ 引入了固定大小的整数类型,如 int32_t和 int64_t,它们分别是 4字节​ 和 8字节。 (3)最佳实践:使用这些确定大小的类型是程序员精确控制数据表示的最佳途径,可增强程序的可移植性。


    总结栏

    本节明确了 字长(Word Size)​ 作为计算机系统的基础参数,其核心影响有二: 一是决定了虚拟地址空间的理论上限(32位4GB,64位16EB),二是影响了C语言中许多数据类型(尤其是 long和指针)的存储大小。

    对于程序员而言,必须意识到数据类型大小并非绝对,它受制于目标机器的字长和编译选项。为了编写可移植的健壮代码,尤其是在从32位向64位迁移的背景下,应优先使用C99标准提供的 int32_t、int64_t​ 等固定大小类型,并警惕对指针和整数类型之间相互转换的隐含假设。

    图2-3的表格是本节知识的视觉化核心,需要牢记32位与64位环境下关键类型的典型大小差异。

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » (学习笔记)2.1 信息存储(2.1.2 字数据大小)
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!