1.3数值型数据的编码表示

SyEic_L MVP++

三要素

  • 进位计数制(二进制)
  • 定、浮点表示
    • 定点整数、定点小数
    • 浮点数(可用一个定点小数和一个定点整数来表示)
  • 如何用二进制编码

1.定点数编码

原码的表示(Sign and Magnitude

最高位:符号位(1-负数,0-正数)

其余:数值位

  • 0的表示不唯一(1000,0000)
  • 需额外对符号位处理
  • 加减运算不统一

整数和小数表示

  • 定点整数:小数点固定在数值位最右
  • 定点小数:小数点固定在数值位最左

补码表示

重要概念:在一个模运算系统中,一个数与它除以“模”后的余数等价。(例如时钟: 3=15)

  1. 一个负数的补码等于模减该负数的绝对值,正数补码是它自己。
  2. 对于某一确定的模,某数减去小于模的另一数(4),总可以用该数加上另一数的相反数(-4)的补码来代替。(+ 和- 的统一

模运算系统例子

补码定义(假定有n位)

定点整数:

[X]=2n+X(2n1X<2n1,mod2n) [X]_补 = 2^n +X (-2^{n-1} \leq X < 2^{n-1},\quad mod \:2^n)

特殊数的补码:

[2n1]=2n12=100(n10)(mod2n) [-2^{n-1}]_补 = 2^{n-1}-2 = 10…0 \quad(n-1个0)\quad (mod 2^n) [1]=2n001=111(n1)(mod2n) [-1]_补 = 2^n - 0…01 = 11…1 \quad(n个1) \quad (mod 2^n) [+0]=[0]=000(n0) [+0]_补 = [-0]_补 = 00…0 \quad (n个0)

补码->真值

补码

  • 符号为0,则为正数,数值部分相同

  • 符号为1,则为负数,数值各位取反,末位加1,得绝对值

    如:补码11010110的真值为:-0101010= -(32+8+2)= -42

变形补码

双符号,用于存放可溢出的中间结果

移码

  • 将每一个数值加上一个偏置常数(Excess / bias)

  • 一般来说,机器数位数为n时,bias取 2n1 2^{n-1}

    假设n=4:

    Ebiased=E+23 E_{biased} = E + 2^3

2.整数的表示

  • 带符号整数(signed integer):
    • 定点编码方式:原码、补码、反码
  • 无符号整数(unsigned integer):
    • 例如:地址运算、编号表示
    • 没有符号位,也无需使用原码补码移码
    • 能表示的最大值 > 位数相同的带符号整数的最大值

3.浮点数的表示

十进制

十进制

规格化形式:尾数的小数点前只有一位非0数

二进制

二进制

只要对尾数和指数分别编码,就可表示一个浮点数(即:实数)

表示

规格化数举例

  • 浮点数范围比定点数大,但数的个数没变多,变稀疏

IEEE 754 浮点数标准

IEEE 754

二进制浮点数转换为十进制

二进制转十进制

十进制转换为二进制浮点数

十进制转二进制

特殊数

IEEE754浮点数的解释1

IEEE 754浮点数的解释2

4.十进制数的二进制编码表示(BCD)

  1. 十进制有权码(8421码、自然BCD码)
    • 每个十进制数字的4个二进制位都有确定的权
  2. 格雷码
    • 任意两个相邻的编码只有一位二进位不同
  • Title: 1.3数值型数据的编码表示
  • Author: SyEic_L
  • Created at : 2025-02-21 11:25:05
  • Updated at : 2025-02-26 09:23:03
  • Link: https://blog.syeicl.vip/2025/02/21/1-3数值数据的编码表示/
  • License: This work is licensed under CC BY-NC-SA 4.0.
Comments