CPU 中的加法器,為什么可以連同符號位一起運算?
一、前言
計算機(jī)最喜歡的數(shù)字就是 0 和 1,在 CPU 的世界中,它只認(rèn)識這兩個數(shù)字,即使是強(qiáng)大的操作系統(tǒng),也都是由 0 和 1 組成的。
作為一名軟件開發(fā)者,入門學(xué)習(xí)的內(nèi)容可能就是認(rèn)識這 2 個既簡單、又強(qiáng)大的數(shù)字。但是大部分人,對于二進(jìn)制、二進(jìn)制計算、原碼、反碼以及補(bǔ)碼的認(rèn)識,仍處于機(jī)械的強(qiáng)制記憶階段。尤其是對一些編碼和計算,仍然處于模糊的認(rèn)識階段,例如:
CPU 是如何表示負(fù)數(shù)的?
為什么補(bǔ)碼可以用來表示負(fù)數(shù)?
一個 8 位的二進(jìn)制數(shù),最小值為什么是 -128,而不是 -127?
CPU 中的加法器,為什么可以連同符號位一起運算?
這篇文章我們就來聊聊這個最最基礎(chǔ)的內(nèi)容,幫助你來理解二進(jìn)制計算的相關(guān)內(nèi)容,看完這篇文章之后,不僅知其然,更能知其所以然!
PS: 這里有點高調(diào)了,最終的所以然部分,應(yīng)該涉及到數(shù)學(xué)證明這一層次了,本文并不會涉及到求證過程。
二、從十進(jìn)制到二進(jìn)制
1. 十進(jìn)制
作為數(shù)學(xué)計算能力強(qiáng)大的中國,10 以內(nèi)的加減法,應(yīng)該是在幼兒園階段就完成了。如果你不屬于這個范圍,說明你上的是假幼兒園。
我們來快速復(fù)習(xí)一下關(guān)于十進(jìn)制運算的一些基本知識:
每一個數(shù)位上包括的數(shù)字為 0 到 9;
每一個數(shù)位上的數(shù),是它右側(cè)數(shù)位的 10 倍;
兩個數(shù)相加時,相同數(shù)位上的數(shù)相加之和如果大于等于 10,就向前進(jìn) 1 位,即:滿十進(jìn)一;
具體來看就是:
從右數(shù)第一個位數(shù)(個位)上的數(shù)字代表多少個 1;
從右數(shù)第二個位數(shù)(十位)上的數(shù)字代表多少個 10;
從右數(shù)第三個位數(shù)(百位)上的數(shù)字代表多少個 100;
從右數(shù)第四個位數(shù)(千位)上的數(shù)字代表多少個 1000;
十進(jìn)制的數(shù),可以使用后綴字母 D 來表示,也可以省略。例如:十進(jìn)制的 1234 這個數(shù)字,個位上的數(shù)是 4, 十位上的數(shù)是 3, 百位上的數(shù)是 2,千位上的數(shù)是 1(一般是從最右側(cè)的個位說起),每一個數(shù)位上的數(shù)比它右側(cè)大十倍。如下圖:
十進(jìn)制數(shù)據(jù),也稱作基于十的表示法。
2. 二進(jìn)制
那么對于二進(jìn)制呢?直接套用上面十進(jìn)制的概念,然后把 10 換成 2 即可(目前先忽略符號位):
每一個數(shù)位上包括的數(shù)字為 0 和 1;
每一個數(shù)位上的數(shù),是它右側(cè)數(shù)位的 2 倍;
兩個數(shù)相加時,相同數(shù)位上的數(shù)相加之和如果大于等于 2,就向前進(jìn) 1 位,即:滿二進(jìn)一;
具體來看就是:
從右數(shù)第一個位數(shù)上的數(shù)字代表多少個 1;
從右數(shù)第二個位數(shù)上的數(shù)字代表多少個 2;
從右數(shù)第三個位數(shù)上的數(shù)字代表多少個 4;
從右數(shù)第四個位數(shù)上的數(shù)字代表多少個 8;
記住幾個重點:二進(jìn)制數(shù)中只包含 0 和 1 兩個數(shù)字,在相加時滿二進(jìn)一。
在十進(jìn)制中,每一個數(shù)位我們給它進(jìn)行了專門的命名(個位、十位、百位...),但是二進(jìn)制沒有類似的命名。
二進(jìn)制的數(shù),使用后綴字母 B 來表示,例如:二進(jìn)制的 1111B 這個數(shù)字,用圖來表示權(quán)重如下:
換算成十進(jìn)制數(shù)就是 15(1 * 8 + 1 * 4 + 1 * 2 + 1 * 1 = 15)。
在二進(jìn)制中,每一位稱為一個比特(bit),如果用 8 個 bit 來表示一個二進(jìn)制數(shù),最小值是 0000_00000,最大值是 1111_1111;
如果用 16 個 bit 來表示一個二進(jìn)制數(shù),最小值是 0000_0000_0000_0000,最大值是 1111_1111_1111_1111。(為了便于觀察,每 4 個 bit 之間,加上了分隔符)
在早期的計算機(jī)中,8 位的處理器很常見,于是就給它一個專門的名字:字節(jié)(Byte)。16 位的二進(jìn)制數(shù)就是 2 個字節(jié),也稱作:字(Word)。
請輸入評論內(nèi)容...
請輸入評論/評論長度6~500個字
最新活動更多
-
即日-10.29立即報名>> 2024德州儀器嵌入式技術(shù)創(chuàng)新發(fā)展研討會
-
10月31日立即下載>> 【限時免費下載】TE暖通空調(diào)系統(tǒng)高效可靠的組件解決方案
-
即日-11.13立即報名>>> 【在線會議】多物理場仿真助跑新能源汽車
-
11月14日立即報名>> 2024工程師系列—工業(yè)電子技術(shù)在線會議
-
12月19日立即報名>> 【線下會議】OFweek 2024(第九屆)物聯(lián)網(wǎng)產(chǎn)業(yè)大會
-
即日-12.26火熱報名中>> OFweek2024中國智造CIO在線峰會
推薦專題
- 1 Intel宣布40年來最重大轉(zhuǎn)型:年底前裁員15000人、拋掉2/3房產(chǎn)
- 2 因美封殺TikTok,字節(jié)股價骨折!估值僅Meta1/5
- 3 宏山激光重磅發(fā)布行業(yè)解決方案,助力智能制造產(chǎn)業(yè)新飛躍
- 4 國產(chǎn)AI芯片公司破產(chǎn)!白菜價拍賣
- 5 具身智能火了,但規(guī)模落地還需時間
- 6 國產(chǎn)英偉達(dá)們,抓緊沖刺A股
- 7 三次錯失風(fēng)口!OpenAI前員工殺回AI編程賽道,老東家捧金相助
- 8 英特爾賦能智慧醫(yī)療,共創(chuàng)數(shù)字化未來
- 9 英偉達(dá)的麻煩在后頭?
- 10 將“網(wǎng)紅”變成“商品”,AI“爆改”實力拉滿
- 高級軟件工程師 廣東省/深圳市
- 自動化高級工程師 廣東省/深圳市
- 光器件研發(fā)工程師 福建省/福州市
- 銷售總監(jiān)(光器件) 北京市/海淀區(qū)
- 激光器高級銷售經(jīng)理 上海市/虹口區(qū)
- 光器件物理工程師 北京市/海淀區(qū)
- 激光研發(fā)工程師 北京市/昌平區(qū)
- 技術(shù)專家 廣東省/江門市
- 封裝工程師 北京市/海淀區(qū)
- 結(jié)構(gòu)工程師 廣東省/深圳市