小言_互联网的博客

计算机组成原理 原码、补码、反码、移码

357人阅读  评论(0)

机器数

通常称一个数值数据的机内编码为机器数。该机器数所代表的数值成为它的真值。

  • 原码

  • 整数:
    [ x ] = { 0 X , 0 X < 2 n   2 n X , 2 n X < 0 [x]的原码=\left\{ \begin{aligned} 0 \quad X , \quad& {0 \leq X<2^{n} }\\\ 2^{n}-X, & {-2^{n} \leq X<0 }\\ \end{aligned} \right.

  • 小数:
    [ x ] = { X , 0 X < 1   1 X , 1 X < 0 [x]的原码=\left\{ \begin{aligned} X , \quad& {0 \leq X<1 }\\\ 1-X, & {-1 \leq X<0 }\\ \end{aligned} \right.

  • 补码

  • 整数:
    [ x ] = { 0 X , 0 X < 2 n   2 n + 1 + X , 2 n X < 0 [x]的补码=\left\{ \begin{aligned} 0 \quad X , \quad& {0 \leq X<2^{n} }\\\ 2^{n+1}+X, & {-2^{n} \leq X<0 }\\ \end{aligned} \right.

  • 小数:
    [ x ] = { X , 0 X < 1   2 + X , 1 X < 0 [x]的补码=\left\{ \begin{aligned} X , \quad\quad \quad& {0 \leq X<1 }\\\ 2+X, \quad& {-1 \leq X<0 }\\ \end{aligned} \right.

  • 也可以这样:

    • 若为正数,补码=0+真值,这里0表示符号为正
    • 反之,补码=1+(数值位取反+1),这里第一个1表示符号为负,第二个1表示大小1
  • 反码

  • 整数:
    [ x ] = { 0 X , 0 X < 2 n   2 n + 1 1 + X , 2 n X < 0 [x]的反码=\left\{ \begin{aligned} 0 \quad X , \quad& {0 \leq X<2^{n} }\\\ 2^{n+1}-1+X, & {-2^{n} \leq X<0 }\\ \end{aligned} \right.

  • 小数:
    [ x ] = { X , 0 X < 1   ( 2 2 n ) + X , 1 X < 0 [x]的反码=\left\{ \begin{aligned} X , \quad \quad\quad\quad \quad& {0 \leq X<1 }\\\ (2-2^{-n})+X, \quad& {-1 \leq X<0 }\\ \end{aligned} \right.

  • 移码

  • 移码只用于整数
    [x]的移码=2n+X

总结:

  • 对于原码、补码、反码三种机器码:

    • 符号位取1表示负数,取0表示正数。
    • 当真值为正数时,原码=反码=补码
    • 当真值为负数时,形式为:1(符号位) 其余数值位
  • 对于移码:

    • 最高一位为符号位,与其他三种机器码相反,1表示正数,0表示负数
    • 移码只用于表示浮点数的阶码,所以它只能用于整数。
参考
  1. 上课老师所讲笔记
  2. 《计算机组成与体系结构》(清华大学出版社版本)

转载:https://blog.csdn.net/weixin_43889841/article/details/102593339
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场