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

数字系统与编码


1. 数字系统(Number Systems)

1.1 常见数字系统
系统基数符号集示例应用场景
二进制20, 11010计算机底层电路、数据存储
八进制80-717Unix文件权限(如chmod 755
十进制100-942日常计算
十六进制160-9, A-F0x1F内存地址、颜色编码(#RRGGBB)
1.2 进制转换方法
  • 其他进制 → 十进制:加权求和
    1010_2 = 1×2^3 + 0×2^2 + 1×2^1 + 0×2^0 = 10_{10}
    
  • 十进制 → 其他进制:短除法取余
    42_{10} \rightarrow 42÷2=21余0 → 21÷2=10余1 → ... → 101010_2
    
  • 二进制 ↔ 十六进制:4位分组转换
    1101\_0110_2 → D6_{16}
    

2. 数据编码(Data Encoding)

2.1 数值编码
编码类型表示方法范围(8位)特点
原码最高位为符号位(0正1负)-127 ~ +127零有+0-0两种表示
反码负数:符号位不变,其余位取反-127 ~ +127过渡方案,现较少使用
补码负数:反码+1-128 ~ +127现代计算机标准,消除零歧义
移码补码符号位取反-128 ~ +127用于浮点数阶码(如IEEE 754)

示例

  • -5的8位补码表示:
    原码:1000 0101 → 反码:1111 1010 → 补码:1111 1011
    
2.2 字符编码
标准覆盖范围存储方式局限性
ASCII英文、数字、控制字符(128个)1字节(7位)无法表示非拉丁字符
Unicode全球文字(如中文、emoji)UTF-8(变长1-4字节)兼容ASCII,互联网首选
GB2312简体中文(6763个汉字)2字节仅支持简体中文

UTF-8编码规则

  • 1字节:0xxxxxxx(兼容ASCII)
  • 2字节:110xxxxx 10xxxxxx
  • 3字节:1110xxxx 10xxxxxx 10xxxxxx
  • 4字节:11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

3. 高级编码技术

3.1 浮点数编码(IEEE 754)
\text{值} = (-1)^S × 1.M × 2^{E-127}
  • 32位单精度
    S(1位) | E(8位) | M(23位)
    
  • 示例-0.75的二进制表示:
    符号位S=1,0.75=1.1×2^{-1} → E=126(01111110), M=1000...0
    最终:1 01111110 10000000000000000000000
    
3.2 错误检测编码
  • 奇偶校验:附加1位使1的个数为奇/偶
    数据:1010 → 偶校验:1010_0(1的个数为偶数)
    
  • CRC循环冗余校验:多项式模2除法(用于网络传输)
  • 汉明码:可纠正单比特错误的纠错编码

4. 实际应用案例

4.1 计算机内存存储
  • 小端序(Little Endian):低位字节存储在低地址
    32位整数0x12345678在内存中的存储(地址递增方向):
    78 56 34 12
    
4.2 图像颜色编码
  • RGB24位色
    R(8位) | G(8位) | B(8位) → 如纯红色:0xFF0000
    
  • ARGB32位色:增加透明度通道(Alpha)
4.3 条形码与二维码
  • EAN-13条形码:13位数字(前导位+左右数据+校验位)
  • QR码:使用Reed-Solomon纠错编码,支持汉字(需UTF-8转换)

5. 关键问题与解决方案

Q1: 为何计算机使用补码表示负数?
  • 解决零的歧义:补码中+0-0表示相同(均为000...0
  • 简化运算电路:加法器无需区分正负数,统一处理(如5 + (-3)可直接相加)
Q2: UTF-8如何实现变长编码?
  • 前缀码设计:通过起始比特模式标识字节数(如110开头的必为2字节字符首字节)
  • 兼容性:ASCII字符(0-127)保持单字节不变

总结

数字系统与编码是计算机科学的基石,理解其原理对以下领域至关重要:

  • 硬件设计(如CPU算术单元)
  • 数据压缩(如哈夫曼编码)
  • 网络安全(如校验和验证)
  • 跨平台数据交换(如字符编码转换)

掌握进制转换、补码运算和Unicode处理能力,是开发者的核心技能之一。

http://www.xdnf.cn/news/43381.html

相关文章:

  • 2020 年 7 月大学英语四级考试真题(组合卷)——解析版
  • 并发设计模式实战系列(4):线程池
  • RabbitMQ和Seata冲突吗?Seata与Spring中的事务管理冲突吗
  • Chromium 134 编译指南 Ubuntu篇:环境搭建与源码获取(一)
  • PyTorch基础笔记
  • python爬虫复习
  • 杨氏矩阵、字符串旋转、交换奇偶位,offsetof宏
  • Java发生OOM是否必然导致JVM退出
  • 30天开发操作系统 第26天 -- 为窗口移动提速
  • 如何将自己封装的组件发布到npm上:详细教程
  • 组装一台intel n95纯Linux Server服务器
  • UniFlash以串口方式烧录MSPM0G3507(无需仿真器)
  • 方案精读:数字政府智慧政务服务一网通办服务解决方案【附全文阅读】
  • 精通 Spring Cache + Redis:避坑指南与最佳实践
  • 鸿蒙ArkUI之布局实战,线性布局(Column,Row)、弹性布局(Flex)、层叠布局(Stack),详细用法
  • 【后端】【Django】Django 模型中的 `clean()` 方法详解:数据校验的最后防线
  • 【2025面试常问Java八股】AQS介绍(AbstractQueuedSynchronizer 抽象队列同步器)
  • 深入剖析 Java Web 项目序列化:方案选型与最佳实践
  • 嵌入式人工智能应用-第三章 opencv操作 5 二值化、图像缩放
  • Linux进程状态
  • 05【数据基石·下】复合类型:元组 (Tuple) 与数组 (Array) 的定长世界
  • 【MySQL】Read view存储的机制,记录可见分析
  • *数字信号基础
  • Nginx在微服务架构项目(Spring Cloud)中的强大作用
  • 【智驾中的大模型 -3】VLA 在自动驾驶中的应用
  • 运维侠职场日记9:用DeepSeek三天通关详解自动化操作pdf批量提取PDF文字将PDF转Word文档(附上脚本代码)
  • SpringBoot实战3
  • jupyter切换存储路径
  • FFmpeg:M3U8的AES加密
  • Mac-VScode-C++环境配置