0x01
—減法
我們先看一下十進位制裡減法怎麼做,存在什麼問題?
457減368個位數7減8是不夠減的,所以需要向十位借位,17減8等於9。5變成4,4減6又是不夠減,向百位借位,14減6等於8。百位3減3等於0,結果是89。這個是我們自己計算減法時候一種很通用的方法,這種方法用計算機處理有兩個問題。乙個問題是借位,另乙個問題是需要掌握20以內的減法。之前的機械計算機減法確實也是這麼做的,不過隨著歷史的車輪滾滾前行,計算機的發展過程中人才輩出,還是有人發現了另外一種計算減法的簡單方法-補碼,成功的把減法當成了加法來處理。
我們來看一下,457 – 368等於457 + (1000 – 368) – 1000。1000 – 368等於632。632就是368在10進製數里的補碼。457+632 = 1089,減去剛才的1000,可不就是89嗎?但是這裡可能有人會問計算補碼不還是得計算1000減368,沒解決根本問題啊。但是在二進位制裡,計算起來就方便多了(二進位制真是化簡為繁的重大發現)。其實對於乙個只能計算三位數的計算機來講,負368計算補碼的正確方式999-368+1。因為三位數的計算機表示不了1000。對於二進位制來講,那就是先取反,再加一,取反用非門就可以搞定了。計算機裡有符號數用高位表示符號,1是負數,0是正數,所以-1在計算機裡用二進位制的表示應該是1 1 1 1 1 1 1 1,對應的無符號數是255。
—乘法
乘法怎麼算呢?同樣我們先看下十進位制乘法123 * 321是怎麼計算的。
這樣就轉化為乘法、左移和加法操作。有的同學可能又會問,123
* 3計算機怎麼算?先別動手,我們還有二進位制,最終的乘法其實已經被簡化為被乘數乘以10以內的數,在二進位制裡,那就是被乘數乘以2以內的數,2以內的數只有0和1,是不是就簡單多了。我們看下11
* 12的二進位制數相乘的計算過程。
—除法
乘法搞定了,就差除法了,除法怎麼算呢?老規矩,我們先看下10進製123除以4的計算方法。
123 最高位1,比4小,結果是0,餘數是1;
123 上一步的餘數1左移1位是10,加上2是12,12除以4等於3,餘數是0;
123 最後一位是3,比4小,結果是0,餘數是3。
所以結果是30,餘數是3。
沒毛病,讓我們看下二進位制計算的過程。
1 1 1 1 0 1 1 中的1比 100小,結果是0,餘數是1。
111 1 0 1 1 上一步中的餘數1左移1位,加上1是11,比100小,結果是0,餘數是11。
1 111 0 1 1 上一步中的餘數11左移1位,加上1是111,比100大,結果是1,餘數是11。
1 1 110 1 1 上一步中的餘數11左移1位,加上1是111,比100大,結果是1,餘數是11。
1 1 1 101 1 上一步中的餘數11左移1位,加上0是110,比100大,結果是1,餘數是10。
1 1 1 1 011 上一步中的餘數10左移1位,加上1是101,比100大,結果是1,餘數是1。
1 1 1 1 0 11上一步中的餘數1左移1位,加上1是11,比100小,結果是0,餘數是11。
所以結果是0011110(十進位制30),餘數是11(十進位制數3)。
0xff
—總結
加法是計算機中最基本的操作,我們已經有了加法器,計算加法毫無壓力。減法則通過補碼,巧妙的轉化成了加法的運算。而乘法是通過左移和加法完成的,除法則是通過左移和減法完成的。我們通過加法器以及移位器就能完成基本的加減乘除算術運算。但是這樣只能完成兩個數的操作,如果想完成三個數的操作怎麼辦呢?總不能計算兩個數,人工記錄下來結果,然後再與第三個數相加吧,這就需要另外乙個東西-暫存器了,有了暫存器,計算機就可以暫存一些中間結果,持續的執行**進行計算了。下篇文章,給大家分享一下通過電路怎麼記錄資料。
cpu相關的基礎知識
概念 cpu是什麼 做什麼用 一般cpu是接在 的,我們先來看看cpu是什麼,cpu既 處理器 電腦中乙個最重要,最核心的東西,市面上能買到的cpu只有兩種,一種是intel公司生產的,另一種是amd公司生產的。如圖1 1 上圖分別是intel和amd公司兩個廠家生產的cpu,cpu主要的工作就是處...
基礎知識 CPU指令週期
完整執行一條指令所需要的時間 指令週期,讀取 執行週期 fetch and execute cycle 是指cpu要執行指令經過的步驟。計算機之所以能自動地工作,是因為cpu能從存放程式的記憶體裡取出一條指令並執行這條指令 緊接著又是取指令,執行指令,如此周而復始,構成了乙個封閉的迴圈。除非遇到停機...
基礎知識 CPU指令集
計算機指令就是指揮機器工作的指示和命令,程式就是一系列按一定順序排列的指令,執行程式的過程就是計算機的工作過程。指令集,就是cpu中用來計算和控制計算機系統的一套指令的集合,而每一種新型的cpu在設計時就規定了一系列與其他硬體電路相配合的指令系統。而指令集的先進與否,也關係到cpu的效能發揮,它也是...