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

C语言中数据的存储

在C语言中,整数类型的存储方式如下:

1. 无符号整型(unsigned int等)

  • 存储方式:直接使用二进制原码(无符号位,纯二进制值)。

  • 特点:所有位都用于表示数值,范围是 0 到 2^N - 1N 是位数)。例如,32位无符号整型的范围是 0 到 4294967295

2. 有符号整型(intshortlong等)

  • 存储方式通常是补码(Two's Complement),但C标准允许实现定义其他形式(如原码或反码)。

  • 补码的优势

    • 统一加减法运算,无需区分正负数。

    • 0的唯一表示(避免原码中“+0”和“-0”的问题)。

  • C标准的规定

    • C标准(如C11 §6.2.6.2)允许三种有符号整数表示方式:

      1. 原码(Sign-Magnitude):最高位为符号位,其余位为绝对值(例如,-5 表示为 10000101)。

      2. 反码(One's Complement):符号位不变,其余位取反(例如,-5 表示为 11111010)。

      3. 补码(Two's Complement):符号位不变,其余位取反后加1(例如,-5 表示为 11111011)。

    • 虽然标准允许这三种方式,但现代计算机和编译器(如GCC、Clang)几乎全部使用补码

3. 总结

  • 无符号整型:直接存储二进制原码。

  • 有符号整型实际实现中几乎全是补码,但C标准未强制规定(允许原码或反码,只是现实中极少见)。

相关文章:

  • AI进化太快,建立完善的AI理论迫在眉睫
  • 【嵌入式通信协议】串口的详细介绍
  • 数据库与存储优化
  • [Computer Vision]实验八:图像分割
  • RxJS与Redux革命性协同:打造高效、解耦的前端状态管理方案
  • Lab 3 Page Table
  • Linux系统基于ARM平台的LVGL移植
  • 深度学习语义分割数据集全景解析
  • 物理机、虚拟机、容器化怎么选择?
  • JT1078和GB28181差别在哪里?
  • C++(初阶)(二)——类和对象
  • 文件 IO
  • 豆包大模型 MarsCode AI 刷题专栏 001
  • Kotlin协程(六)Flow流
  • 掌握高效大模型任务流搭建术(二):链式流程如何赋能 AI 处理能力提升
  • Chapter 1 Introduction
  • qt open3dAlpha重建
  • proto3语法
  • 修改git fetch后引用没更新
  • 1493. 删掉一个元素以后全为 1 的最长子数组
  • 河南通报部分未检疫生猪流入:立案查处,涉案猪肉被封存
  • 4年间职务侵占、受贿逾亿元,北京高院:严惩民企内部腐败
  • 完善劳动关系协商协调机制,《共同保障劳动者合法权益工作指引》发布
  • 上海位居全球40城科技传播能力第六名
  • 新时代,新方志:2025上海地方志论坛暨理论研讨会举办
  • 江西4人拟任县(市、区)委书记,其中一人为“80后”