定点数表示_oic0cocs8u10cgcf

最后修改于

image.png
¥定点小数[x]={x0x<1 1x=1+x1<x0定点小数[x]_原 = \left\{ \begin{aligned} x && 0\leq x<1 \\\ 1-x=1+|x| && -1 < x\leq 0 \end{aligned} \right.
定点整数[x]={0,x0x2n 2nx=2n+x2n<x0定点整数[x]_原 = \left\{ \begin{aligned} 0,x && 0\leq x\leq 2^n \\\ 2^n-x=2^n+|x| && -2^n < x\leq 0 \end{aligned} \right.
定点小数[x]={x0x<1 2+x=2x1x<0定点小数[x]_补 = \left\{ \begin{aligned} x && 0\leq x<1 \\\ 2+x=2-|x| && -1 \leq x< 0 \end{aligned} \right.
定点整数[x]={0,x0x<2n 2n+1+x=2n+1x2nx<0定点整数[x]_补 = \left\{ \begin{aligned} 0,x && 0\leq x< 2^n \\\ 2^{n+1}+x=2^{n+1}-|x| && -2^n \leq x< 0 \end{aligned} \right.
定点整数[x]=2n+x     2nx<2n定点整数[x]_移 = 2^n+x \ \ \ \ \ -2^n\leq x < 2^n
由数求码:
符号位 + 数字表示位,得到原码。
在符号位为 1 时:

  • 反码 = 数字表示位取反(原码)
  • 补码编码 = 反码编码 + 1,补码表示数 = 反码表示数 - 1
  • 移码 = 符号位取反(补码)

不考虑符号位:
补码:code = encode((256 + x) mod 256)
移码:code = encode(128 + x)
由码求数:
原码 -> 数
在符号位为 1 时:
数字位取反 (反码) = xor (反码, 128 - 1)-> 原码 -> 数
符号位取反 (补码) -> 移码数 - 128 -> 数
不考虑符号位:
补码:x = decode(code^128) - 128
移码:x = decode(code) - 128