摘要:將補數(shù)的概念用到計算機中,便出現(xiàn)了補碼這種機器數(shù)。通常,從原碼形式入手來求補碼。它與補碼的區(qū)別是末位少加一個,因此很容易從補碼的定義推出反碼的定義。若真值為純小數(shù),它的反碼形式為其中表示符號位。
一、原碼表示法
原碼表示法是一種最簡單的機器數(shù)表示法,其最高位為符號位,符號位為“0”時表示該數(shù)為正,符號位為“1”時表示該數(shù)為負,數(shù)值部分與真值相同。
若真值為純小數(shù),它的原碼形式為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
若真值為純整數(shù),它的原碼形式為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
原碼表示方法的優(yōu)點是直觀易懂,機器數(shù)和真值間的相互轉(zhuǎn)換很容易,用原碼實現(xiàn)乘、除運算的規(guī)則很簡單;缺點是實現(xiàn)加、減運算的規(guī)則較復(fù)雜。
二、補碼表示法
1.模和同余為了理解補碼表示法,首先需要引入模和同余的概念。
模(Module)是指一個計量器的容量,可用M表示。例如:一個4位的二進制計數(shù)器,當(dāng)計數(shù)器從0計到15之后,再加1,計數(shù)值又變回0.這個計數(shù)器的容量M = 2^4 = 16,即模為16.由此可見,純小數(shù)的模為2,一個字長為n + 1位的純整數(shù)的模為2^(n+1)。 同余概念是指兩個整數(shù)A和B除以同一個正整數(shù)M,所得余數(shù)相同,則A和B對M同余,即A和B在以M為模時是相等的,可讀作: A = B(mod M)。對鐘表而言,其模M = 12,故4點和16點、5點和17點、...均是同余的,它們可以寫作:4 = 16(mod 12),5 =17(mod 12) 利用模和同余概念的補碼表示法在進行算數(shù)運算時可以使減法運算轉(zhuǎn)化為加法運算,從而簡化機器的運算器電路。
假設(shè):時鐘停在8點,而現(xiàn)在正確的時間是6點,這時撥準(zhǔn)時鐘的方法有兩種:
(1)將分針倒著旋轉(zhuǎn)兩圈(即時鐘倒撥兩個小時),8 - 2 = 6(做減法)
(2)將分針正著旋轉(zhuǎn)10圈(即時鐘正撥10小時),8 + 10 = 6(mod 12)(做加法) 此時,8 - 2 = 8 + 10(mod 12)設(shè): A = -2, B = 10 則:10/12 = (12 - 2)/12 = 1 + -2/12
故:-2和10同余。同余的兩個數(shù),具有互補關(guān)系,-2余10對模12互補,也可以說-2的補數(shù)是10(以12為模)。可見,只要確定了“模”,就可找到一個與負數(shù)等價的正數(shù)(該正數(shù)即為負數(shù)的補數(shù))來代替此負數(shù),而這個正數(shù)可以用模加上負數(shù)本身求得,這樣就可把減法運算用加法實現(xiàn)了。
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)
將補數(shù)的概念用到計算機中,便出現(xiàn)了補碼這種機器數(shù)。
2.補碼表示補碼的符號位表示方法與原碼相同,其數(shù)值部分的表示與數(shù)的正負有關(guān);對于正數(shù),數(shù)值部分與真值形式相同;對于負數(shù),將真值的數(shù)值部分按位取反,且在最低位上加1.
若真值為純小數(shù),它的補碼形式為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
若真值為純整數(shù),它的補碼形式為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.由真值、原碼轉(zhuǎn)換為補碼采用補碼系統(tǒng)的計算機需要將真值或原碼形式表示的數(shù)據(jù)轉(zhuǎn)為補碼形式,以便于運算器對其進行運算。通常,從原碼形式入手來求補碼。
當(dāng)X為正數(shù)時,[X]補 = [X]原 = X。 當(dāng)X為負數(shù)時,其[X]補等于把[X]原除去符號位外的各位求反后再加“1”。
反之,當(dāng)X為負數(shù)時,已知[X]補,也可通過對其除符號位外的各位求反加“1”求得[X]原當(dāng)X為負數(shù)時,由[X]原轉(zhuǎn)換為[X]補得另一種更有效的方法是:自低位向高位,尾數(shù)的第一個“1”及其右部的“0”保持不變,左邊的各位取反,符號位保持不變。
example-7: 若:[X]原 = 1.1110011000 則:[X]補 = 1.000110***1000***(符號位和斜體部分不變,其他位取反)
這種方法避免了加1運算,是實際求補線路邏輯實現(xiàn)的依據(jù)。
也可以直接由真值X轉(zhuǎn)換為[X]補,其方法更簡單:數(shù)值位自低位向高位,尾數(shù)的第一個“1”及其右部的“0”保持不變,左部的各位取反,負號用“1”表示。
example-8: 若:X = -0.1010001010 則:[X]補 = 1.0101110110
三、反碼表示法
反碼表示法與補碼表示法有很多類似之處,對于整數(shù),數(shù)值部分與真值形式相同;對于負數(shù),將真值的數(shù)值按位取反。它與補碼的區(qū)別是末位少加一個“1”,因此很容易從補碼的定義推出反碼的定義。
若真值為純小數(shù),它的反碼形式為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
若真值為純整數(shù),它的反碼形式為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
四、三種碼制的比較
三種碼制既有共同點,又有各自不同的性質(zhì),主要區(qū)別有以下幾點:
(1)對于正數(shù)它們都等于真值本身,而對于負數(shù)各有不同的表示
(2)最高位都是表示符號位,補碼和反碼的符號位可作為數(shù)值位的一部分看待,和數(shù)值位一起參加運算;但原碼的符號位不允許和數(shù)值位同等看待,必須分開進行處理
(3)對于真值0,原碼和反碼各有兩種不同的表示形式,而反碼只有唯一的一種表示形式
(4)原碼、反碼表示的正、負數(shù)范圍相對于零來說是對稱的;但補碼負數(shù)表示范圍較正數(shù)范圍寬,能多表示一個最負的數(shù)(絕對值最大的負數(shù)),其值等于-2^n(純整數(shù))或-1(純小數(shù))
參考:計算機組成原理、Structured Computer Organization、Computer Organization and Design-The Hardware/Software Interface
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/100560.html
摘要:將補數(shù)的概念用到計算機中,便出現(xiàn)了補碼這種機器數(shù)。通常,從原碼形式入手來求補碼。它與補碼的區(qū)別是末位少加一個,因此很容易從補碼的定義推出反碼的定義。若真值為純小數(shù),它的反碼形式為其中表示符號位。 一、原碼表示法 原碼表示法是一種最簡單的機器數(shù)表示法,其最高位為符號位,符號位為0時表示該數(shù)為正,符號位為1時表示該數(shù)為負,數(shù)值部分與真值相同。若真值為純小數(shù),它的原碼形式為Xs,.X1X2X...
概念:設(shè)計模式(Design Pattern)---人們在面對同類型軟件工程設(shè)計問題所總結(jié)的經(jīng)驗。模式不是代碼,而是某類問題的通用設(shè)計方案。目的:為了代碼的重用性、讓代碼易于理解,保證代碼的可靠性。分類:總體可以分為三大類:設(shè)計模式的5+2大原則:1,單一責(zé)任原則(Single Responsibility Principle)2,開放封閉原則(Open Closed Principle)3,里氏...
摘要:簡介是用于結(jié)構(gòu)化數(shù)據(jù)序列化的一種文本格式,包含種基礎(chǔ)類型字符串,數(shù)字,布爾和和兩種結(jié)構(gòu)類型對象和數(shù)組。對象是一個由零或者多個名值對組成的無序集合,其中名值對中名是字符串類型,值則可以是字符串,數(shù)字,布爾,,對象或數(shù)組類型。 Json JavaScript Object Notation (JSON)是一個輕量級的,基于文本的,跨語言的數(shù)據(jù)交換格式。它從ECMAScript編程語言標(biāo)準(zhǔn)(...
摘要:一讓廣播明星黯然失色要建立頁面,需要創(chuàng)建用超文本標(biāo)記語言,編寫的文件,把它們放在一個服務(wù)器上二服務(wù)器能做什么服務(wù)器在互聯(lián)網(wǎng)上有一份全天候的工作。一、Web讓廣播明星黯然失色 要建立Web頁面,需要創(chuàng)建用超文本標(biāo)記語言(HyperText Markup Language,HTML)編寫的文件,把它們放在一個Web服務(wù)器上二、Web服務(wù)器能做什么? Web服務(wù)器在互聯(lián)網(wǎng)上有一份全天候的工...
本文大多為大伙兒闡述了Python如何運用詞典和目錄完成1個簡單的學(xué)生們信息系統(tǒng),原文中詳盡注解,便捷了解,所需要的可以了解一下 本文運用Python里的詞典和目錄完成學(xué)生們信息系統(tǒng) 文件信息儲放文件格式所采用的是python內(nèi)置的pickle控制模塊,必須新創(chuàng)建course.txt和student.txt供程序流程讀寫能力?! ∫韵率菍嵗幋a importpickle #從文件中讀...
閱讀 3216·2023-04-26 01:30
閱讀 678·2021-11-08 13:15
閱讀 1800·2021-09-24 10:35
閱讀 1012·2021-09-22 15:41
閱讀 1937·2019-08-30 15:44
閱讀 605·2019-08-30 13:22
閱讀 1015·2019-08-30 13:06
閱讀 1208·2019-08-29 13:22