logo
导航

数制与编码

数制与编码

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
  • 零只有一种表示
  • 适合运算,广泛使用