计算机系统基础知识2-码制

计算机系统基础知识2-码制本文详细介绍了机器数中的无符号数和带符号数概念 以及原码 反码 补码和移码的定义 计算方式和示例 展示了不同编码方法在表示正负数时的特点和应用场景

大家好,欢迎来到IT知识分享网。

机器数有无符号数带符号数,无符号数表示正数, 在机器数中没有符号位.
对于无符号数, 若约定小数点的位置在机器数的最低位之后, 则是纯整数, 若小数点的位置在机器数的最高位之前, 则是纯小数.
对于

带符号数
, 机器数的最高位是表示正、负的符号位, 其余表示数值
为了便于运算, 带符号的机器数采用原码, 反码和补码等不同的编码方法, 机器数的这些编码方法成为码制。

原码, 反码, 补码

原码表示法

数值X的原码记为[X]原, 如果机器字长为n(即采用n个二进制表示数据), 则原码定位如下:

1. 若X为纯整数, 则

[ X ] 原 = { X , 0 ≤ X ≤ 2 n − 1 − 1 2 n − 1 + ∣ X ∣ , – ( 2 n − 1 − 1 ) ≤ X ≤ 0 [X]_原 = \begin{cases} X, & \text 0\le X \le 2^{n-1}-1 \\ 2^n -1 +|X|, & \text -(2^{n-1} -1) \le X \le 0 \\ \end{cases} [X]={
X,2n1+X,0X2n11(2n11)X0

2. 若X为纯小数, 则

[ X ] 原 = { X , 0 ≤ X < 1 2 0 + ∣ X ∣ , – 1 < X ≤ 0 [X]_原 = \begin{cases} X, & \text 0\le X < 1 \\ 2^0 +|X|, & \text -1 < X \le0 \\ \end{cases} [X]={
X,20+X,0X<11<X0

若机器字长为n等于8,

[ + 1 ] 原 = 00000001 [ − 1 ] 原 = [+1]_原 = 00000001 \uad [-1]_原= \\ [+1]=00000001[1]=
[ + 127 ] 原 = 0 [ − 127 ] 原 = [+127]_原 = 0 \uad [-127]_原= \\ [+127]=0[127]=
在原码表示法中, 最高位为符号位, 0表示正号, 1表示负号, 其余n-1位表示数值的绝对值, 数值0的原码为
‘ [ + 0 ] 原 = 00000000 ‘ , [ − 0 ] 原 = `[+0]_原= 00000000`, [-0]_原= [+0]=00000000‘,[0]=


反码表示法

数值X的反码记作[X]反, 若机器字长为n, 则:
X为纯整数时
[ X ] 反 = { X , 0 ≤ X < 2 n − 1 − 1 2 n − 1 + X , – ( 2 n − 1 − 1 ) ≤ X ≤ 0 [X]_反 = \begin{cases} X, & \text 0\le X < 2^{n-1}-1 \\ 2^n-1 + X, & \text -(2^{n-1}-1) \le X \le 0 \\ \end{cases} [X]={
X,2n1+X,0X<2n11(2n11)X0

X为纯小数时
[ X ] 反 = { X , 0 ≤ X < 1 2 − 2 − ( n − 1 ) + X , – 1 < X ≤ 0 [X]_反 = \begin{cases} X, & \text 0\le X \lt 1 \\ 2-2^{-(n-1)}+X, & \text -1 \lt X \le0 \\ \end{cases} [X]={
X,22(n1)+X,0X<11<X0




[ + 1 ] 反 = 00000001 [ − 1 ] 反 = [+1]_反 = 00000001 \uad [-1]_反= \\ [+1]=00000001[1]=
[ + 127 ] 反 = 0 [ − 127 ] 反 = [+127]_反 = 0 \uad [-127]_反= \\ [+127]=0[127]=
在反码表示中, 最高位是符号位, 0表示正号, 1表示负号, 正数的反码与原码相同, 负数的反码则是其绝对值按位取反
数值0的反码有两种形式: [ + 0 ] 反 ∗ ∗ = ∗ ∗ 00000000 , [ − 0 ] 反 ∗ ∗ = ∗ ∗ [+0]反 = 00000000, [-0]反 = [+0]=00000000,[0]=


补码表示法

数值X的补码记作[X]补, 如果机器字长为n, 则
X是纯整数
[ X ] 补 = { X , 0 ≤ X ≤ 2 n − 1 − 1 2 n + X , – 2 n − 1 ≤ X ≤ 0 [X]_补 = \begin{cases} X, & \text 0\le X \le 2^{n-1}-1 \\ 2^n+X, & \text -2^{n-1} \le X \le0 \\ \end{cases} [X]={
X,2n+X,0X2n112n1X0

X是纯小数


[ X ] 补 = { X , 0 ≤ X < 1 2 + X , – 1 ≤ X < 0 [X]_补 = \begin{cases} X, & \text 0\le X \lt 1 \\ 2+X, & \text -1 \le X \lt0 \\ \end{cases} [X]={
X,2+X,0X<11X<0

示例:

[ + 1 ] 补 = 00000001 [ − 1 ] 补 = [+1]_补 = 00000001 \uad [-1]_补= \\ [+1]=00000001[1]=
[ + 127 ] 补 = 0 [ − 127 ] 补 = [+127]_补 = 0 \uad [-127]_补= \\ [+127]=0[127]=
正数的补码与其原码和反码相同, 负数的补码则等于其反码的末位加1

移码表示法

移码表示法是在数X上增加一个偏移量来定义的, 常用于表示浮点中的阶码, 如果机器字长为n, 规定偏移量为2n-1

[ X ] 移 = 2 n − 1 + X ( − 2 n − 1 ≤ X < 2 n − 1 ) [X]_移 = 2^{n-1} + X(-2^{n-1} \le X \lt 2^{n-1}) \\ [X]=2n1+X(2n1X<2n1)

[ + 1 ] 移 = [ − 1 ] 移 = 0 [+1]_移 = \uad [-1]_移=0 \\ [+1]=[1]=0
[ + 127 ] 移 = [ − 127 ] 移 = 00000001 [+127]_移 = \uad [-127]_移=00000001 \\ [+127]=[127]=00000001

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/125159.html

(0)
上一篇 2025-09-29 20:45
下一篇 2025-09-29 21:10

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信