定點數表示方法——原碼,補碼,反碼,移碼

來源:互聯網
上載者:User

標籤:

1. 真值和機器數

    真值:數的實際值,用加號或減號和絕對值的某進位形式來表示,如+1010,-12,-FFFF等.

    機器數:真值在電腦中的二進位表示,特點是符號數字化且數的大小受機器字長限制,其表示形式有原碼,補碼,反碼,移碼等.

2. 原碼.

    1). 定點小數:

\[{x_{[{\rm{原}}]}} = \left\{ {\begin{array}{*{20}{l}}
{x,0 \le x < 1}\\
{{2^0} - x = {2^0} + \left| x \right|, - 1 < x \le 0}
\end{array}} \right.\]

    (其中x[原]是機器數,x是真值,最高位為符號位,下同.)

    表示範圍:

\[\max = 1 - {2^{ - n}},\min = - (1 - {2^{ - n}})\]

    (n是指x除符號位的位元,下同)

    如: x=+0.1011, x[原]=0.1011

    x=-0.1011, x[原]=1.1011

    2). 定點整數:

\[{x_{[原]}} = \left\{ \begin{array}{l}
x,0 \le x < {2^{\rm{n}}}\\
{2^n} - x = {2^n} + |x|, - {2^n} < x \le 0
\end{array} \right.\]

    表示範圍:

\[\max  = {2^n} - 1,\min  =  - ({2^n} - 1)\]

    如:x=+1011,x[原]=01011

        x=-1011,x[原]=11011

    3). 特點:

    原碼實質上為符號位加上數的絕對值,0正1負;

    原碼零有兩個編碼,+0和 -0編碼不同,表示不唯一;

    原碼加減運算複雜,乘除運算規則簡單;

    原碼錶示簡單,易於同真值之間進行轉換.

3. 補碼

    1). 定點小數:

\[{x_{[補]}} = \left\{ \begin{array}{l}
x,0 \le x < 1\\
2 + x = 2 - |x|, - 1 \le x \le 0
\end{array} \right.(\bmod 2)\]

    表示範圍:

\[\max  = 1 - {2^{ - n}},\min  =  - 1\]

    如:x=+0.1011,  x[補]=0.1011

        x=-0.1011, x[補]=10+x=10.0000-0.1011=1.0101

    2). 定點整數:

\[{x_{[補]}} = \left\{ {\begin{array}{*{20}{l}}
{x,0 \le x < {2^{\rm{n}}},0 \le x < {2^n}}\\
{{2^{n + 1}} + x = {2^{n + 1}} - |x|, - {2^n} \le x \le 0}
\end{array}(\bmod {2^{n + 1}})} \right.\]

     表示範圍:

\[\max  = {2^n} - 1,\min  =  - {2^n}\]

    如:x=+1011,x[補]=01011

        x=-1011, x[補]=2^5 – |-1011|=100000 – 1011=10101

    3). 特點

    負數補碼實質上為原碼除符號位按位取反再加1

    補碼最高一位為符號位,0正1負;

    補碼零有唯一編碼;

    補碼能很好用於加減運算;

    補碼滿足x[補]+(-x)[補]=0;

    補碼最大的優點在於能夠將減法運算轉換成加法運算,其中符號位參與運算,它滿足:

\[\begin{array}{*{20}{l}}
{{{(x{\rm{ }} + {\rm{ }}y)}_{\left[ 補 \right]}} = {\rm{ }}{x_{\left[ 補 \right]}} + {\rm{ }}{y_{\left[ 補 \right]}}}\\
{{{(x{\rm{ }} - {\rm{ }}y)}_{\left[ 補 \right]}} = {\rm{ }}{x_{\left[ 補 \right]}} + {\rm{ (}} - y{)_{\left[ 補 \right]}}}
\end{array}\]

    例如:

\[\begin{array}{l}
x = {11_{[10]}} = {1011_{[2]}},y = {5_{[10]}} = {0101_{[2],}}\\
{(x - y)_{[補]}} = {x_{[補]}} + {( - y)_{[補]}} = 01011 + 11011 = 100110(溢出) = 00110 = {6_{[10]}} = x - y\;\;
\end{array}\]

    4). 補碼和原碼轉換.

    正數:x[補]=x[原]

    負數:按位取反,末位加1(符號位除外)

    如:x= -1001001, x[原]=11001001,x[補]=10110110+1=10110111

    5). 補碼和真值的轉換

\[{\rm{補碼}}\left\{ \begin{array}{l}
{\rm{符號 = }}0{\rm{ - 正}},{\rm{餘下為數值部分}}\\
{\rm{符號 = }}1{\rm{ - 負}},{\rm{餘下求補為數值部分}}
\end{array} \right.\]

4. 反碼

    1). 定點小數

\[{x_{[{\rm{反}}]}} = \left\{ {\begin{array}{*{20}{l}}
{x,0 \le x < 1}\\
{(2 - {2^{ - n}}) + x = 2 + x - {2^{ - n}}, - 1 < x \le 0}
\end{array}} \right.\]

    範圍:

\[\max = 1 - {2^{ - n}},\min = - (1 - {2^{ - n}})\]

    如:x=0.1011,x[反]=0.1011

        x=-0.1011,x[反]=1.0100

    2). 定點整數

\[{x_{[{\rm{反}}]}} = \left\{ {\begin{array}{*{20}{l}}
{x,0 \le x < {2^{\rm{n}}}}\\
{({2^{n + 1}} - 1) + x = {2^{n + 1}} + x - 1, - {2^n} < x \le 0}
\end{array}} \right.\]

    範圍:

\[\max  = {2^n} - 1,\min  =  - ({2^n} - 1)\]

    如:x=1011,x[反]=01011

        x=-1011,x[反]=10100

    3). 特點

   負數反碼實質上為原碼除符號按位求反,也就是補碼-1;

   反碼零有兩個編碼,+0 和 -0 的編碼不同;

   反碼難以用於加減運算;

   反碼的表示範圍與原碼相同.

5. 移碼:用於表示浮點數的階碼

    1). 定義

\[x[移] = {2^n} + x, - {2^n} \le x < {2^n}\]

   範圍:

\[\max  = {2^{n + 1}} - 1,\min  = 0\]

    如:x=+1011,x[移]=11011

        x=-1011,x[移]=00101

    2). 特點

    移碼中符號位表示的規律與原碼,補碼,反碼相反——"1"正"0"負;

    移碼為全0時所對應的真值最小,為全1時所對應的真值最大,移碼的大小直觀地反映了真值的大小,這有助於兩個浮點數進行大小比較;

    真值0在移碼中的表示形式是唯一的;

    移碼把真值對應到一個正數域,所以可將移碼視為無符號數,直接按無符號數規則比較大小;

    同一數值的移碼和補碼除最高位相反外,其他各位相同.

    3). 移碼和補碼轉換

\[\begin{array}{l}
{x_{[補]}} = \left\{ \begin{array}{l}
x,0 \le x < {2^n}\\
{2^{n + 1}} + x, - {2^n} \le x \le 0
\end{array} \right.\\
{x_{[移]}} = {2^n} + x, - {2^n} \le x < {2^n}\\
{x_{[移]}} = \left\{ \begin{array}{l}
{x_{[補]}} + {2^n},0 \le x < {2^n}\\
{x_{[補]}} + {2^n} - {2^{n + 1}} = {x_{[補]}} - {2^n}, - {2^n} \le x \le 0
\end{array} \right.
\end{array}\]

定點數表示方法——原碼,補碼,反碼,移碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.