摘要:將補數的概念用到計算機中,便出現了補碼這種機器數。通常,從原碼形式入手來求補碼。它與補碼的區別是末位少加一個,因此很容易從補碼的定義推出反碼的定義。若真值為純小數,它的反碼形式為其中表示符號位。
一、原碼表示法
原碼表示法是一種最簡單的機器數表示法,其最高位為符號位,符號位為“0”時表示該數為正,符號位為“1”時表示該數為負,數值部分與真值相同。
若真值為純小數,它的原碼形式為Xs,.X1X2X3...Xn,其中Xs表示符號位。原碼定義為:
example-1: 若:X = 0.0110 則:[X]原 = X = 0.0110 若:X = -0.0110 則:[X]原 = 1 - X = 1 - (-0.0110) = 1 + 0.0110 = 1.0110
若真值為純整數,它的原碼形式為XsX1X2X3...Xn,其中Xs表示符號位。原碼的定義為:
example-2: 若:X = 1101 則:[X]原 = X = 01101 若:X = -1101 則:[X]原 = 2^n - X = 2^4 - (-1101) = 10000 + 1101 = 11101
在原碼表示中,真值0有兩種不同的表示形式:
[+0]原 = 00000 [-0]原 = 10000
原碼表示方法的優點是直觀易懂,機器數和真值間的相互轉換很容易,用原碼實現乘、除運算的規則很簡單;缺點是實現加、減運算的規則較復雜。
二、補碼表示法
1.模和同余為了理解補碼表示法,首先需要引入模和同余的概念。
模(Module)是指一個計量器的容量,可用M表示。例如:一個4位的二進制計數器,當計數器從0計到15之后,再加1,計數值又變回0.這個計數器的容量M = 2^4 = 16,即模為16.由此可見,純小數的模為2,一個字長為n + 1位的純整數的模為2^(n+1)。 同余概念是指兩個整數A和B除以同一個正整數M,所得余數相同,則A和B對M同余,即A和B在以M為模時是相等的,可讀作: A = B(mod M)。對鐘表而言,其模M = 12,故4點和16點、5點和17點、...均是同余的,它們可以寫作:4 = 16(mod 12),5 =17(mod 12) 利用模和同余概念的補碼表示法在進行算數運算時可以使減法運算轉化為加法運算,從而簡化機器的運算器電路。
假設:時鐘停在8點,而現在正確的時間是6點,這時撥準時鐘的方法有兩種:
(1)將分針倒著旋轉兩圈(即時鐘倒撥兩個小時),8 - 2 = 6(做減法)
(2)將分針正著旋轉10圈(即時鐘正撥10小時),8 + 10 = 6(mod 12)(做加法) 此時,8 - 2 = 8 + 10(mod 12)設: A = -2, B = 10 則:10/12 = (12 - 2)/12 = 1 + -2/12
故:-2和10同余。同余的兩個數,具有互補關系,-2余10對模12互補,也可以說-2的補數是10(以12為模)。可見,只要確定了“模”,就可找到一個與負數等價的正數(該正數即為負數的補數)來代替此負數,而這個正數可以用模加上負數本身求得,這樣就可把減法運算用加法實現了。
example-3: 9 - 5 = 9 + (-5) = 9 + (12 - 5) = 9 + 7 = 4(mod 12) example-4: 65 - 25 = 65 + (-25) = 65 + (100 -25) = 65 + 75 = 40(mod 100)
將補數的概念用到計算機中,便出現了補碼這種機器數。
2.補碼表示補碼的符號位表示方法與原碼相同,其數值部分的表示與數的正負有關;對于正數,數值部分與真值形式相同;對于負數,將真值的數值部分按位取反,且在最低位上加1.
若真值為純小數,它的補碼形式為Xs,.X1X1...Xn,其中Xs表示符號位。補碼的定義為:
example-5: 若:X = 0.0110 則:[X]補 = X = 0.0110 若:X = -0.0110 則:[X]補 = 2 + X = 2 + (-0.0110) = 10 - 0.0110 = 1.1010
若真值為純整數,它的補碼形式為XsX1X2...Xn,其中Xs表示符號位。補碼定義為:
example-6: 若:X = 1101; 則:[X]補 = X = 01101; 若:X = -1101; 則:[X]補 = 2^(n+1) + X = 2^5 + (-1101) = 100000 - 1101 = 10011
在補碼表示中,真值0的便是形式是唯一的:
[+0]補 = [-0]補 = 0000
3.由真值、原碼轉換為補碼采用補碼系統的計算機需要將真值或原碼形式表示的數據轉為補碼形式,以便于運算器對其進行運算。通常,從原碼形式入手來求補碼。
當X為正數時,[X]補 = [X]原 = X。 當X為負數時,其[X]補等于把[X]原除去符號位外的各位求反后再加“1”。
反之,當X為負數時,已知[X]補,也可通過對其除符號位外的各位求反加“1”求得[X]原當X為負數時,由[X]原轉換為[X]補得另一種更有效的方法是:自低位向高位,尾數的第一個“1”及其右部的“0”保持不變,左邊的各位取反,符號位保持不變。
example-7: 若:[X]原 = 1.1110011000 則:[X]補 = 1.000110***1000***(符號位和斜體部分不變,其他位取反)
這種方法避免了加1運算,是實際求補線路邏輯實現的依據。
也可以直接由真值X轉換為[X]補,其方法更簡單:數值位自低位向高位,尾數的第一個“1”及其右部的“0”保持不變,左部的各位取反,負號用“1”表示。
example-8: 若:X = -0.1010001010 則:[X]補 = 1.0101110110
三、反碼表示法
反碼表示法與補碼表示法有很多類似之處,對于整數,數值部分與真值形式相同;對于負數,將真值的數值按位取反。它與補碼的區別是末位少加一個“1”,因此很容易從補碼的定義推出反碼的定義。
若真值為純小數,它的反碼形式為Xs,.X1X2...Xn,其中Xs表示符號位。反碼的定義為:
example-9: 若:X = 0.0110 則:[X]反 = 0.0110 若:X = -0.0110 則:[X]反 = (2 - 2^-n) + X = (2 - 2^-4) + (-0.0110) = 1.1111 + (-0.0110) = 1.1111 - 0.0110 = 1.1001
若真值為純整數,它的反碼形式為XsX1X2...Xn,其中Xs表示符號位。反碼的定義為:
example-10: 若:X = 1101 則:[X]反 = 01101 若:X = -1101 則:[X]反 = (2^(n+1) - 1) + X = (2^5 - 1) + (-1101) = 11111 - 1101 = 10010
在反碼表示中,真值0也有兩種不同的表示形式:
[+0]反 = 00000 [-0]反 = 11111
四、三種碼制的比較
三種碼制既有共同點,又有各自不同的性質,主要區別有以下幾點:
(1)對于正數它們都等于真值本身,而對于負數各有不同的表示
(2)最高位都是表示符號位,補碼和反碼的符號位可作為數值位的一部分看待,和數值位一起參加運算;但原碼的符號位不允許和數值位同等看待,必須分開進行處理
(3)對于真值0,原碼和反碼各有兩種不同的表示形式,而反碼只有唯一的一種表示形式
(4)原碼、反碼表示的正、負數范圍相對于零來說是對稱的;但補碼負數表示范圍較正數范圍寬,能多表示一個最負的數(絕對值最大的負數),其值等于-2^n(純整數)或-1(純小數)
參考:計算機組成原理、Structured Computer Organization、Computer Organization and Design-The Hardware/Software Interface
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/42892.html
摘要:將補數的概念用到計算機中,便出現了補碼這種機器數。通常,從原碼形式入手來求補碼。它與補碼的區別是末位少加一個,因此很容易從補碼的定義推出反碼的定義。若真值為純小數,它的反碼形式為其中表示符號位。 一、原碼表示法 原碼表示法是一種最簡單的機器數表示法,其最高位為符號位,符號位為0時表示該數為正,符號位為1時表示該數為負,數值部分與真值相同。若真值為純小數,它的原碼形式為Xs,.X1X2X...
摘要:簡介是用于結構化數據序列化的一種文本格式,包含種基礎類型字符串,數字,布爾和和兩種結構類型對象和數組。對象是一個由零或者多個名值對組成的無序集合,其中名值對中名是字符串類型,值則可以是字符串,數字,布爾,,對象或數組類型。 Json JavaScript Object Notation (JSON)是一個輕量級的,基于文本的,跨語言的數據交換格式。它從ECMAScript編程語言標準(...
摘要:一讓廣播明星黯然失色要建立頁面,需要創建用超文本標記語言,編寫的文件,把它們放在一個服務器上二服務器能做什么服務器在互聯網上有一份全天候的工作。一、Web讓廣播明星黯然失色 要建立Web頁面,需要創建用超文本標記語言(HyperText Markup Language,HTML)編寫的文件,把它們放在一個Web服務器上二、Web服務器能做什么? Web服務器在互聯網上有一份全天候的工...
本文大多為大伙兒闡述了Python如何運用詞典和目錄完成1個簡單的學生們信息系統,原文中詳盡注解,便捷了解,所需要的可以了解一下 本文運用Python里的詞典和目錄完成學生們信息系統 文件信息儲放文件格式所采用的是python內置的pickle控制模塊,必須新創建course.txt和student.txt供程序流程讀寫能力。 以下是實例編碼 importpickle #從文件中讀...
閱讀 3868·2021-07-28 18:10
閱讀 2577·2019-08-30 15:44
閱讀 1083·2019-08-30 14:07
閱讀 3455·2019-08-29 17:20
閱讀 1577·2019-08-26 18:35
閱讀 3533·2019-08-26 13:42
閱讀 1816·2019-08-26 11:58
閱讀 1585·2019-08-23 18:33