数制与编码
数制与编码
1. 进位计数制
基本概念
进位计数制:按进位原则进行计数的方法
基数:每个数位上可使用的数码个数
位权:每个数位上的数码所表示的数值大小
常用数制
二进制(Binary):
- 基数:2
- 数码:0、1
- 位权:2^n
- 应用:计算机内部表示
八进制(Octal):
- 基数:8
- 数码:0-7
- 位权:8^n
- 应用:程序调试
十进制(Decimal):
- 基数:10
- 数码:0-9
- 位权:10^n
- 应用:日常计算
十六进制(Hexadecimal):
- 基数:16
- 数码:0-9、A-F
- 位权:16^n
- 应用:程序开发
数制转换
十进制转其他进制:
- 整数部分:除基取余法
- 小数部分:乘基取整法
其他进制转十进制:
- 按位权展开求和
二进制与八进制:
- 三位二进制对应一位八进制
二进制与十六进制:
- 四位二进制对应一位十六进制
2. 真值与机器数
基本概念
真值:数的真实值,带符号
机器数:计算机中表示的数,固定位数
原码表示
定义:符号位+数值位
特点:
- 符号位:0 表示正,1 表示负
- 数值位:与真值绝对值相同
- 零有两种表示:+0 和-0
表示范围:
- n 位原码:-(2^(n-1)-1)到+(2^(n-1)-1)
反码表示
定义:正数与原码相同,负数符号位不变,数值位取反
特点:
- 正数:与原码相同
- 负数:符号位为 1,数值位取反
- 零有两种表示:+0 和-0
表示范围:
- n 位反码:-(2^(n-1)-1)到+(2^(n-1)-1)
补码表示
定义:正数与原码相同,负数符号位不变,数值位取反加 1
特点:
- 正数:与原码相同
- 负数:符号位为 1,数值位取反加 1
- 零只有一种表示:+0
表示范围:
- n 位补码:-2^(n-1)到+(2^(n-1)-1)
3. 字符与字符串编码
ASCII 编码
基本 ASCII:
- 7 位编码
- 128 个字符
- 0-31:控制字符
- 32-126:可打印字符
扩展 ASCII:
- 8 位编码
- 256 个字符
- 128-255:扩展字符
Unicode 编码
基本概念:
- 统一字符编码标准
- 支持多语言字符
- 向后兼容 ASCII
编码方式:
- UTF-8:变长编码,1-4 字节
- UTF-16:16 位或 32 位编码
- UTF-32:32 位固定长度编码
特点:
- 支持全球所有语言
- 统一编码标准
- 广泛使用
中文字符编码
GB2312:
- 国标码
- 双字节编码
- 支持简体中文
GBK:
- 扩展国标码
- 兼容 GB2312
- 支持繁体中文
GB18030:
- 最新国标
- 支持少数民族文字
- 兼容 Unicode
练习题
练习 1
将十进制数-25 表示为 8 位二进制的原码、反码和补码。
参考答案
原码:
- 符号位:1(负数)
- 数值位:25 的二进制表示
- 25 = 16 + 8 + 1 = 11001
- 原码:10011001
反码:
- 符号位:1(负数)
- 数值位:11001 取反 = 00110
- 反码:11100110
补码:
- 符号位:1(负数)
- 数值位:反码加 1
- 00110 + 1 = 00111
- 补码:11100111
练习 2
简述原码、反码、补码的区别。
参考答案
原码:
- 符号位+数值位
- 正负数表示对称
- 零有两种表示
- 不适合运算
反码:
- 正数与原码相同
- 负数数值位取反
- 零有两种表示
- 运算复杂
补码:
- 正数与原码相同
- 负数数值位取反加 1
- 零只有一种表示
- 适合运算,广泛使用