三、為什麼使用反碼?
四、為什麼使用補碼?
五、原碼、反碼、補碼優缺點
六、總結
n位補碼能表示的範圍:原碼中的符號位僅用來表示數的正、負,不參加運算,進行運算的只是數值部分。原碼運算時,應首先比較兩個數的符號,若兩數的符號相同,則可將兩個數的數值相加,最後給結果附上相應的符號;若兩數的符號不同,則需比較兩數的數值大小,然後將數值較大的數減去數值較小的數,並將數值較大的數的符號作為最後結果的符號。
反碼加、減運算規則:運算時,符號位和數值位一樣參加運算,如果符號位產生進製(溢位),則需將此進製加到結果的最低位(結果最後一位加1),稱之為「迴圈進製」。運算結果的符號位為0時,說明是正數的反碼,與原碼相同;運算結果的符號位為1時,說明是負數的反碼,應再對運算結果求反碼,才得到原碼。
補碼加、減運算規則是:運算時,不必判斷數的正負,符號位直接參與運算,能得到正確的結果,如果符號位產生了進製(溢位),此進製可「略去」(丟棄),符號位進製的自然丟失不會影響結果的正確性。運算結果符號位為0時,說明是正數的補碼,與原碼相同。運算結果符號位為1,說明是負數的補碼,應對結果再求補碼才得原碼。
判斷溢位的方法主要根據符號位的進製和最高數值位的進製狀態來判斷結果有無溢位,設最高位向符號位的進製用cp表示,符號位的進製用cs表示,則有:
計算機實現加法運算是很容易的,若直接作減法,運算規則很複雜,需要處理借位等等,內部邏輯元件會增多,運算效率很低,所以計算機一般在減去乙個數的時候會轉換成加上這個被減數的負數,將減法轉換成了加法。原碼在執行減法運算時,如:4 - 2 (10進製)= 4 + (-2)= 0 100 + 1 010 (二進位制原碼) = 1110 (二進位制原碼)= -6 (10進製),上面例子計算4-2,將4-2轉換成4+(-2)並用原碼計算,得出的結果錯誤,原碼雖然很直觀轉換了10進製數,但是計算輸出的原碼值並不正確,所以計算機不能直接使用原碼儲存和計算。
為了解決原碼執行減法運算出錯的問題,出現了反碼,反碼減法規則為:a - b = a + (-b),如果最高位發生了溢位,則需要在最低位加上1, 例如:
計算機是可以使用反碼儲存和計算的,早期的計算機如cdc 6000、linc、pdp-1等都是使用反碼的。 補碼是現代計算機使用的編碼格式,解決了上面反碼的兩個缺點。補碼中0用(0000 0000)表示,可以用(1000 0000)表示-128,能夠多表示乙個最低數;補碼的減法規則比較簡單,當發生了溢位,直接丟棄溢位,例如: 在現代計算機系統中,數值一律用補碼來表示和儲存。相對於反碼,補碼加法更簡單,直接丟棄溢位,不需要針對溢位單獨處理,所以用補碼做運算效率高。優點:編碼簡單直觀,與真值轉換非常方便;缺點:無法將減法轉換成加法運算,如果用原碼表示帶符號的二進位制數,符號位需要單獨處理。
優點:無需硬體分辨符號位,解決了原碼無法執行減法運算的問題;缺點:0有兩種編碼,產生二義性,給機器判斷0帶來了麻煩;反碼的演算法規則比較複雜,需要增加計算機內部邏輯元件額外判斷溢位,會影響運算效率。
優點:0只有一種表達方式,能夠多表示乙個最低數;補碼運算過程簡單,運算效率高;為了解決原碼執行減法運算的問題;缺點:補碼使用模n加減法,模2^(n+1)表示丟掉第(n+1)位,比較難理解。
為了解決0有兩個編碼的問題,多出的乙個編碼可以多表示乙個最低位;
將符號位和數值一併處理,不需要單獨的處理符號位,從而降低了複雜度,利用高位溢位,將減法運算變成加法運算,簡化運算的設計。
計算機 計算機基礎整理
大學四年浪費的代價。半夜整理東西 cpu 其功能主要是解釋計算機指令以及處理計算機軟體中的資料。cpu由運算器 控制器和暫存器及實現它們之間聯絡的資料 控制及狀態的匯流排構成。差不多所有的cpu的運作原理可分為四個階段 提取 fetch 解碼 decode 執行 execute 和寫回 writeb...
(計算機視覺)計算機視覺基礎
opencv cximage cimg freeimage opencv中vc庫的版本與visual studio版本的對應關係 vc8 2005 vc9 2008 vc10 2010 vc11 2012 vc12 2013 vc14 2015 vc15 2017 visual studio中的輔助...
計算機基礎 計算機構成
計算機的構成是由硬體和軟體構成。硬體是由輸入裝置,運算器,控制器,儲存器,輸出裝置構成 輸入裝置 鍵盤,掃瞄器等等,是用來輸入指令的 運算器 計算機內部用來做數 算和邏輯運算的 控制器 用來接收和發出指令的 運算器和控制器一起組成cpu,是計算機的大腦 儲存器 是由記憶體和外存組成 1,記憶體 不能...