訂閱
糾錯
加入自媒體

CPU 中的加法器,為什么可以連同符號位一起運算?

一、前言

計算機最喜歡的數(shù)字就是 0 和 1,在 CPU 的世界中,它只認識這兩個數(shù)字,即使是強大的操作系統(tǒng),也都是由 0 和 1 組成的。

作為一名軟件開發(fā)者,入門學習的內(nèi)容可能就是認識這 2 個既簡單、又強大的數(shù)字。但是大部分人,對于二進制、二進制計算、原碼、反碼以及補碼的認識,仍處于機械的強制記憶階段。尤其是對一些編碼和計算,仍然處于模糊的認識階段,例如:

CPU 是如何表示負數(shù)的?

為什么補碼可以用來表示負數(shù)?

一個 8 位的二進制數(shù),最小值為什么是 -128,而不是 -127?

CPU 中的加法器,為什么可以連同符號位一起運算?

這篇文章我們就來聊聊這個最最基礎的內(nèi)容,幫助你來理解二進制計算的相關(guān)內(nèi)容,看完這篇文章之后,不僅知其然,更能知其所以然!

PS: 這里有點高調(diào)了,最終的所以然部分,應該涉及到數(shù)學證明這一層次了,本文并不會涉及到求證過程。

二、從十進制到二進制 

1. 十進制

作為數(shù)學計算能力強大的中國,10 以內(nèi)的加減法,應該是在幼兒園階段就完成了。如果你不屬于這個范圍,說明你上的是假幼兒園。

我們來快速復習一下關(guān)于十進制運算的一些基本知識:

每一個數(shù)位上包括的數(shù)字為 0 到 9;

每一個數(shù)位上的數(shù),是它右側(cè)數(shù)位的 10 倍;

兩個數(shù)相加時,相同數(shù)位上的數(shù)相加之和如果大于等于 10,就向前進 1 位,即:滿十進一;

具體來看就是:

從右數(shù)第一個位數(shù)(個位)上的數(shù)字代表多少個 1;

從右數(shù)第二個位數(shù)(十位)上的數(shù)字代表多少個 10;

從右數(shù)第三個位數(shù)(百位)上的數(shù)字代表多少個 100;

從右數(shù)第四個位數(shù)(千位)上的數(shù)字代表多少個 1000;

十進制的數(shù),可以使用后綴字母 D 來表示,也可以省略。例如:十進制的 1234 這個數(shù)字,個位上的數(shù)是 4, 十位上的數(shù)是 3, 百位上的數(shù)是 2,千位上的數(shù)是 1(一般是從最右側(cè)的個位說起),每一個數(shù)位上的數(shù)比它右側(cè)大十倍。如下圖:

十進制數(shù)據(jù),也稱作基于十的表示法。

2. 二進制

那么對于二進制呢?直接套用上面十進制的概念,然后把 10 換成 2 即可(目前先忽略符號位):

每一個數(shù)位上包括的數(shù)字為 0 和 1;

每一個數(shù)位上的數(shù),是它右側(cè)數(shù)位的 2 倍;

兩個數(shù)相加時,相同數(shù)位上的數(shù)相加之和如果大于等于 2,就向前進 1 位,即:滿二進一;

具體來看就是:

從右數(shù)第一個位數(shù)上的數(shù)字代表多少個 1;

從右數(shù)第二個位數(shù)上的數(shù)字代表多少個 2;

從右數(shù)第三個位數(shù)上的數(shù)字代表多少個 4;

從右數(shù)第四個位數(shù)上的數(shù)字代表多少個 8;

記住幾個重點:二進制數(shù)中只包含 0 和 1 兩個數(shù)字,在相加時滿二進一。

在十進制中,每一個數(shù)位我們給它進行了專門的命名(個位、十位、百位...),但是二進制沒有類似的命名。

二進制的數(shù),使用后綴字母 B 來表示,例如:二進制的 1111B 這個數(shù)字,用圖來表示權(quán)重如下:

換算成十進制數(shù)就是 15(1 * 8 + 1 * 4 + 1 * 2 + 1 * 1 = 15)。

在二進制中,每一位稱為一個比特(bit),如果用 8 個 bit 來表示一個二進制數(shù),最小值是 0000_00000,最大值是 1111_1111;

如果用 16 個 bit 來表示一個二進制數(shù),最小值是 0000_0000_0000_0000,最大值是 1111_1111_1111_1111。(為了便于觀察,每 4 個 bit 之間,加上了分隔符)

在早期的計算機中,8 位的處理器很常見,于是就給它一個專門的名字:字節(jié)(Byte)。16 位的二進制數(shù)就是 2 個字節(jié),也稱作:字(Word)。

1  2  3  4  下一頁>  
聲明: 本文由入駐維科號的作者撰寫,觀點僅代表作者本人,不代表OFweek立場。如有侵權(quán)或其他問題,請聯(lián)系舉報。

發(fā)表評論

0條評論,0人參與

請輸入評論內(nèi)容...

請輸入評論/評論長度6~500個字

您提交的評論過于頻繁,請輸入驗證碼繼續(xù)

暫無評論

暫無評論

    人工智能 獵頭職位 更多
    掃碼關(guān)注公眾號
    OFweek人工智能網(wǎng)
    獲取更多精彩內(nèi)容
    文章糾錯
    x
    *文字標題:
    *糾錯內(nèi)容:
    聯(lián)系郵箱:
    *驗 證 碼:

    粵公網(wǎng)安備 44030502002758號