最近在看哈工大刘宏伟老师的《计算机组成原理》,总结其中关于有符号数的几种表示法,顺便感谢老师这么好的公开课。
首先先明确两个概念:
- 真值:带符号的数,如+101,-101
- 机器数:符号数字化的数,如0101,1101
下面结束有符号数的四种表示法
1. 原码表示法
定义:
- 对于整数
[ x ] 原 = { 0 , x 2 n > x ≥ 0 2 n − x 0 ≥ x > − 2 n [x]_{原}=\begin{cases} 0, x & 2^n>x\geq0\\ 2^n-x & 0\geq x>-2^n \end{cases} [x]原={ 0,x2n−x2n>x≥00≥x>−2n
其中 x x x为真值, n n n为整数的位数。
例子:
x = + 1110 [ x ] 原 = 0 , 1110 x=+1110\quad [x]_{原}=0,1110 x=+1110[x]原=0,1110
x = − 1110 [ x ] 原 = 2 4 + 1110 = 1 , 1110 x=-1110\quad [x]_{原}=2^4+1110=1,1110 x=−1110[x]原=24+1110=1,1110
这里逗号用于分割符号位和数值部分,实际计算机存储中不存在,下同。 - 对于小数
[ x ] 原 = { x 1 > x ≥ 0 1 − x 0 ≥ x > − 1 [x]_{原}=\begin{cases} x & 1>x\geq0\\ 1-x & 0\geq x>-1 \end{cases} [x]原={ x1−x1>x≥00≥x>−1
例子:
x = + 0.1101 x 原 = 0.1101 x=+0.1101 \quad {x}_{原}=0.1101 x=+0.1101x原=0.1101
x = − 0.1101 x 原 = 1 + 0.1101 = 1.1101 x=-0.1101 \quad {x}_{原}=1+0.1101=1.1101 x=−0.