關于補碼原碼反碼的深度思考_第1頁
關于補碼原碼反碼的深度思考_第2頁
關于補碼原碼反碼的深度思考_第3頁
關于補碼原碼反碼的深度思考_第4頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、關于補碼、原碼、反碼的深度思考關于補碼,原碼,反碼的問題,說簡單,很簡單,基本人人都會算,會求解。 可是沒幾個人能對這幾個概念的來龍去脈搞得清清楚楚,明明白白的. 比如,為什么引入編碼,為什么引入原碼,又為什么引入反碼. 反碼存在的意義是什么,補碼的引入原因,為什么補碼能夠把符號位一起運算?補碼的優(yōu)勢到底在哪里?根據(jù)韓大師的指示(韓宏博士),我們應該對問題多多思考,多想幾個為什么. 如果你搞不懂來龍去脈,恐怕后面的操作幾乎可以把你搞得暈頭轉象,好象懂了,會做題了.可是心理總覺得沒吃透,對吧?       下面我把我的思考分享給大家:&

2、#160;      計算機的基本功能是對信息進行處理.所以我們引出了一個重要的概念 信息表示的數(shù)字化,包括信息的表示 ,信息的存儲,信息的轉化,信息的加工,信息的傳送,和對這些過程的控制.       首先,我們把重點放在信息的表示,計算機中進位記數(shù)制,我想應該都明白為什么用二進制吧? 然后我們就需要對它進行編碼? 為什么要進行編碼呢,在人腦中只是約定了+為正數(shù),-為負數(shù),就可以在人腦中進行高度抽象的運算了,但是,在計算機中不行啊,計算機很傻的,計算機中的任何行為都依賴于它的物理結構

3、,它沒有思維的. 所以你必須告訴它什么是正,什么是負! 所以我們必須進行編碼,以區(qū)分正負.原碼的出現(xiàn)與衰落        最開始的時候,人們約定在數(shù)前面第一位用做表示符號的位, 1表示負 0 表示正. 他們稱之為原碼. 很不錯,可以成功的區(qū)分出正負了. 可是馬上就意識到它的一些局限性了.       1 加減的不方便, 符號位需要單獨處理,單獨判斷.同0相加或相減,那好判斷. 可異號呢? 那就涉及一個判斷是否夠減的邏輯了.很難做到.   

4、;     2 +0 表示為 0000 -0 表示為 1000 ,這就存在二義性了,計算機中是絕對不能容惹二義性的東西存在的.補碼的大放光彩    原碼的缺點使人們要找出一種新的編碼,這種編碼就是補碼.首先它必須繼承原碼的特點(可以表示正負)而且它至少應該有兩個優(yōu)點,可以把符號位一起運算和0沒有二義性.怎么才能做到呢? 如果是你,你能創(chuàng)造出這種編碼嗎?    在日常生活中,我們發(fā)現(xiàn)時鐘有這樣一個特點,就是以12為模,13點是多久呢?舍棄模12 大家都知道就是1點了. -1 點也就是11

5、點. 兩者是完全等價的,因為它們有模12. 通過這個特點可以做什么? 大家注意了,可以變減為加啊,比如:-1點再過5個小時是幾點, -1+5=4點,我們可以這樣變換 (-1+12)+5=4 ,你會發(fā)現(xiàn)這個等式是不是錯了?應該是16對啊,你錯了,滿12就已經(jīng)溢出了,只剩下4.    而計算機是否也有這個特點呢?答案是肯定的,實現(xiàn)模運算的基礎顯然就是寄存器的長度是固定的.那么變減為加那就算是實現(xiàn)了.例如82-54=82+46= (1)28 ,那么到底是怎么樣才能把符號位一起運算呢?我們知道正數(shù)的補碼就是本身,負數(shù)的補碼就變反加一. 我們來舉個例子 比如異號想

6、加 A-B=87-25,我們把它轉換成補碼=0(87)+1(75)=062,嘿嘿,發(fā)現(xiàn)沒有 符號位一起運算了.結果為62,再來,把它反過來 25-87 ,轉換成補碼0(25)+1(13)=1(38),這里有的同會說,不對了,結果不應該是-38. 你再仔細看看,我提示下補碼+補碼=? ,也是等于補碼啊,1(38)的真值是-62,對吧? 完全可以把符號一起運算.     最關鍵的部分就在這里了,把符號位一起運算的理論依據(jù)是什么,什 么樣的編碼可以連同符號位一起運算,而原碼為什么不能把符號位一起運算? 經(jīng)過我一天一夜的思考 :),大家看看這樣理解對不

7、對. 數(shù) A ,有正有負,對吧? 也就是A+(-A)=0 ,哈哈,就是它了,我們設A=0001,你看原碼,A=00001,-A=10001,A+(-A)=10010,哈哈1+(-1),變成-2了,再看補 碼 00001+11111=00000,哈哈,完全正確,你如果再要去想為什么,也很簡單了一個數(shù)加去它的補數(shù)=什么? 當然=模了,模的定義就是模減去一個數(shù)的結果就是這個數(shù)的補數(shù). 等于模了,舍去模,那不就變成0 了. 這就是連同符號位一起運算的依據(jù).       你還會發(fā)現(xiàn)一個特點,這個特點在我們物理上的具體實現(xiàn)時是相當重要的.請看原碼

8、 0001=0000000001,而1001是否等于111111111001呢,很明顯是不可能的. 而補碼1001絕對是等于1111111001的,不信你算算看,這個性質(zhì)就叫符號的可擴充性.       反碼的出現(xiàn)原因       哈哈,補碼很明顯是我們的最佳選擇了,為什么又弄一個叫反碼的東西來,我看到這里的時候也是很不理解,還是韓大師那句話,要多思考它是怎么回事呢?它的 思路應該是反過來的,我們聯(lián)系聯(lián)系具體的邏輯元器件,是不是有個非門的東西?。磕闶撬兂?,變成,說

9、白了就是按位取反啊,所以反碼是從下層映射 上來的東西,我們?yōu)槭裁匆芯克?,就是因為它的物理太容易實現(xiàn)了,我們不得不研究它的性質(zhì),研究它與我們的補碼的關系結果,果不起然,關系密切著呢, 是什么啊,反碼加就變補碼了這就是三大編碼了,原碼,反碼,補碼1原碼 正數(shù)的符號位為0,負數(shù)的符號位為1,其它位按照一般的方法來表示數(shù)的絕對值。用這樣的表示方法得到的就是數(shù)的原碼?!纠?】當機器字長為8位二進制數(shù)時:            X1011011    &#

10、160;              X原碼01011011            Y1011011                 Y原碼11011011     

11、60;      1原碼00000001              1原碼10000001            127原碼01111111            127原碼11111111原碼表示的

12、整數(shù)范圍是:(2n-11)(2n-11),其中n為機器字長。則:8位二進制原碼表示的整數(shù)范圍是127127              16位二進制原碼表示的整數(shù)范圍是32767327672反碼            對于一個帶符號的數(shù)來說,正數(shù)的反碼與其原碼相同,負數(shù)的反碼為其原碼除符號位以外的各位按位取反?!纠?.14】當機器字長為8位二進制數(shù)時: X1011011 X原碼0

13、1011011   X反碼01011011Y1011011 Y原碼11011011   Y反碼101001001反碼00000001   1反碼11111110127反碼01111111   127反碼10000000負數(shù)的反碼與負數(shù)的原碼有很大的區(qū)別,反碼通常用作求補碼過程中的中間形式。         反碼表示的整數(shù)范圍與原碼相同。3補碼   正數(shù)的補碼與其原碼相同,負數(shù)的補碼為其反碼在最低位加1?!纠?】(1)

14、X1011011 (2) Y1011011 (1)根據(jù)定義有: X原碼01011011        X補碼01011011(2) 根據(jù)定義有: Y原碼11011011        Y反碼10100100  Y補碼10100101補碼表示的整數(shù)范圍是2n-1(2n-11),其中n為機器字長。則:8位二進制補碼表示的整數(shù)范圍是128127        16位二進制補

15、碼表示的整數(shù)范圍是3276832767當運算結果超出這個范圍時,就不能正確表示數(shù)了,此時稱為溢出。所以補碼的設計目的是: 使符號位能與有效值部分一起參加運算,從而簡化運算規(guī)則. 使減法運算轉換為加法運算,進一步簡化計算機中運算器的線路設計 4補碼與真值之間的轉換    正數(shù)補碼的真值等于補碼的本身;負數(shù)補碼轉換為其真值時,將負數(shù)補碼按位求反,末位加1,即可得到該負數(shù)補碼對應的真值的絕對值。 【例3】X補碼01011001B,X補碼11011001B,分別求其真值X。(1)X補碼代表的數(shù)是正數(shù),其真值:      &

16、#160;                                       X1011001B         

17、60;                                       (1×261×241×231×20)     

18、                                           (641681)      

19、60;                                         (89)D(2)X補碼代表的數(shù)是負數(shù),則真值:     

20、60;                                        X(1011001求反1)B        

21、                                        (01001101)B         

22、                                       (0100111)B          &

23、#160;                                     (1×251×221×211×20)                                       &#

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論