天天看點

2.2.1 定點數的表示 原碼 反碼 補碼 移碼

2.2.1 定點數的表示 原碼 反碼 補碼 移碼
2.2.1 定點數的表示 原碼 反碼 補碼 移碼
2.2.1 定點數的表示 原碼 反碼 補碼 移碼
2.2.1 定點數的表示 原碼 反碼 補碼 移碼
2.2.1 定點數的表示 原碼 反碼 補碼 移碼
2.2.1 定點數的表示 原碼 反碼 補碼 移碼
2.2.1 定點數的表示 原碼 反碼 補碼 移碼
2.2.1 定點數的表示 原碼 反碼 補碼 移碼
2.2.1 定點數的表示 原碼 反碼 補碼 移碼
2.2.1 定點數的表示 原碼 反碼 補碼 移碼

沒有未來的未來不是我想要的未來 o(╥﹏╥)o (つД`)(ノへ ̄、)哭了

學習的是定點數的表示,那我們首先來認識一下什麼叫定點數與定點數相對應的另一個概念叫做浮點數所謂定點數就是指小數點的位置固定不變,而浮點數是小數點的位置是不固定的,不會浮動,那麼大家熟悉的實際之數來類比的話,啊,所謂定點數就是我們平時更習慣使用的這種正常的幾種方式,我們會顯示的标明小數點的位置,而浮點數呢,就是我們用科學計數法表示的啊,這種數,雖然我們把小數點的位置标注在了這個地方,但是如果在乘上我們給出的這個接碼,那麼我們的這小數點其實是會往後移的,那這是我們熟悉的實際值,其實對于二進制也是類似的,二進制的資料表示也分為定點數和浮點數雖然都是0101組成的,但是我們終歸需要确定這個小數點的一個位置,那如果我們規定小數點的位置固定不變,這就是定點數,如果我們還需要加上一個類似于科學技術法的這種接法,那麼這種數就是浮點數那玩到書裡不分講的是釘釘裡面則表示怎麼進行加減乘除這些預算二點三這個學習服務的表示和運算我們。讀點數的表示和運算,那這個小姐我們先學習定點數則表示分為無符号數和有符号數,其中有符号數可以用原碼反碼補碼,起碼這樣的4種方式來表示,那這個小結是很重要的基礎,同時也是考試的重點,我們需要重點關注這幾種碼之間的互相轉換問題啊,首先我們先看一下比較簡單的無符号數所為無符号數,就是指整個機器字長的全部二進制位都是用來表示數值,并沒有正負這樣的符号之分,相當于我們是用所有的二斤之味來表示數的絕對值,比如像這個二進制數,它所對應的10進制就應該是156,那具體怎麼轉換,這個是我們在之前的小結中已經重點強調過的内容,就是用每一位二進制數乘以這一位的位權,然後所有的未進行一個相乘相加就可以,那我們需要重點探讨一個問題,就是無符号數的表示範圍是多大?那既然要聊他的表示範圍,我們自然需要确定一個前提條件就是我們到底有多少個被一個月大比如表示一個屋總共可以有二。這總共可以有2的8次方種狀态,分别是泉靈道權益,那所有的二進制位都為一這個二進制數所對應的真值應該是多少呢?可以用很多種思路來确定這個二進制數所對應的真值,首先最土的辦法,我們是不是可以把每一位阿和為全鄉城鄉家那8個二進制位就相當于是2的7次方+2的6次方加一直加到2的0次方,那這是一個簡單的等比數列求和問題得到的結果,應該是2的8次方減,一大2的8次方-1應該是=255,是以8位2進制數他表示的範圍數值範圍就應該是0~255這樣的一個範圍,那這是用每一位×自己的為全鄉城鄉嫁這樣的方式算出來的一個值,我們再介紹一種思路來算8個一所表示的值,現在我們給這8個一再加上一個1那麼末位,1+1=0向高位進,11+1又=0,再向高位進一好,那所有的這些都是等于0進1我們會更高更高的這個we他的全是應該是二次方因為他是第九個二進制位這個值的基礎上加一等于二。原先這個值的基礎上加1=2的8字方步就是2的8次方減1嗎,是以我們也可以用這樣的思路來确定啊,二姨它所表示的一個值,那是我把剛才這種思路在進行一個推廣的話,分位的無符号數,它能表示的範圍竟然就應該是0~2的N次方-1号,是以這是恩為無符号數的一個表示範圍,所有的二進制位都是用來表示數值而沒有符号位,是以稱為無符号數,那一般來說,當我們談到無符号數的時候,我們通常隻會讨論無符号的整數,而沒有無符号的小數這一點大家應該是有感受的啊,比如大家學習C語言的時候,他有一個關鍵字叫on scient這個關鍵字你隻能用來修飾按sign into或者long這些整數相關的關鍵字大家可以去試一下,如果要按sign去修飾flott就是這種浮點數的話,那它的變異其實是會報錯的,是以當我們在談到這種無符号數的時候,通常我們隻會探讨整數符号的整數,而不會探讨小樹這是我們既需要考慮到整數表示要考慮到束河鎮整數的話。是也需要考慮到小數如何表示,那如果要表示整數的話,我們通常會規定小數點是固定的隐含在最低位的後面,然後最高位的這個二進制位表示的是符号位,通常零表示的是正,然後一表示的是負,另外如果我們要用定點的方式表示小數的話,我們通常會規定最高位為符号位小數點隐含在這個符号位的後面,是以如果我們用這種定點的方式來表示一個比如說是19.75這樣的數的話,那我們需要把整數部分單獨的儲存,然後把小數部分單獨的儲存,那我們可以用源碼反碼補碼,這樣的三種方式來表示定點的整數或者小數,另外還可以用移碼來表示定點的整數,這個我們一會會展開在之後的講解中,如果我們把真值記為X的話,那我們會用這種X加一個鐘貨号,然後右下角的标注園方不以這樣的方式來表示,所對應的原碼反碼5碼合1嗎表示整數或者小數的素質不分的這些是為我們就把車。尾數然後最高位我們完成了一個符号位好,接下來我們先來看最簡單的源碼,那所謂源碼呢,就是指我們會用尾數來表示增值的一個絕對值,其實就是之前我們一直在探讨的大家比較熟悉的那種二進制數表示方法,那我們假設機器自産是8倍啊,也就是說我們有一位用來表示符号,然後剩下的7位用來表示數值也就是尾數好,首先來看一下硬點整數用元碼怎麼來表示每個定點整數占8個比特類最高位是負号,然後後續每一個位的全值啊,在這已經标出來了,那如果說我們要用源碼的方式表示正的19的話,首先符号位正号應該是對應0,然後後續的這7個尾數我們需要表示成這個真值的絕對值,也就是19 19,應該是等于16+2再+1是以19所對應的二進制就應該是1+2再加16是16,應該是2的4次方好,是以19的尾數就應該是001 001,那如果我們要表示的是-19的話,是不是隻需要把符号位從0變為1就可以了,好,是以這個是19和-19的一個源碼表示我們的定點整數小數撿拾預設。就可以了啊,是以這就是19和-19的一個原碼表示,是以我們的定點整數小數點是預設銀行在了最後面這個位置,是以我們才可以确定這一位的位權是2的零次方再往上一位是2.1次方,如果說我們規定小數點已經含在這個位置,那是不是意味着小數點左邊這一位的全值是2.0次方再往上是2的一次2~2次2的三次,而小數點往右的這幾位全值就會變成2的-1,2的-22的-3變成這樣的一個情況,好,是以我們這兒确定各個位的權值,其實是基于我們小數點的這個隐含位置來進行判斷的,好呐,這是用原碼表示的定點整數,而且呢就是我們手機的那種表述方式,隻不過如果題目規定了啊,我們的這個定點整數它需要占多少位的這些部分補上靈兒,接下來看定點小數的一個原碼表示由于我們的小數點後面跟着一位是零點五零點二五d三五年。呃-1往後是2的-2-3啊,一直到2的-7也就是第1位是0.5,第2位是0.25,第3位是0.125,好後續的就不再展開好,那正的0.75怎麼表示呢?0.75應該剛好是=0.5加上0.25,是以尾數部分肯定是兩個1,然後後續全部是0,那正的0.75,我們隻需要讓負号位為0就可以,而負的0.75我們把負号位從0改成1,然後尾數依然是不變的,是以這就是定點小數的一個源碼表示同樣的,如果題目告訴我們機器字長的位數或者指明了原碼需要占多少位的湊足規定的位數,在課本和題目裡面,大家也經常會見到這樣的一種呃書寫的方式,就有的地方可能會在符号位後面打一個小小的逗号啊,但是這個逗号其實是不存在的,是我們腦補上去的,這麼寫隻不過是為了讓大家更好的區分符号位,還有尾數這樣的兩個部分如果沒有明确的指令機器字長是多少多少倍。負這樣的兩個部分,另外如果沒有明确的指明機器自成是多少,源碼需要占多少位,那麼像剛才付19這個數,我們也可以寫成1然後後面跟這樣的一串,也就是把剛才我們補上的啊,兩個0給去掉那類似的在書上表示定點小數的時候,也可以寫成這樣的一種形式啊,這個地方是一個小點點,而不是逗号,這個小數點前面這一位是符号而不是數值,是以這個是我們不能把它了解為是1.11,而應該把它了解為是負的0.11啊,這是大家看書做題的時候,有可能會遇到的一種寫法好,接下來我們要關注的是源碼的一個表示範圍,先探讨源碼表示定點整數的一個表示範圍,總共有an加一位,其中尾數有N個未,那麼a位的位數可以表示的絕對值的範圍應該是0~2的N次方減1應該是這樣的一個範圍剛才無符号數那個地方跑過表示這樣的一個範圍讓我們再加上符号位的。一直的範圍應該是0~2的N次方減1,應該是這樣的一個範圍,這個結論剛才我們在無符号數那個地方探讨過好,那尾數可以表示這樣的一個範圍,那我們再加上符号V的話,最小的我們可以表示的整數就應該是負的啊,2N次方減一而正的可以表示的最大整數就應該是2的N次方減1好,這裡應該很好了解,那唯一一點需要注意的是用原碼表示定點整數,我們在表示真值0的時候可以有正0和-0這樣的兩種形式,正零就是符号位為0,然後後續的尾數也全部是0,而-0就是符号位為1,後續的尾數全部是0,是以雖然N加一個二進制位可以表示出R的N+一次方這麼多種啊,不同的狀态,理論上我們也可以表示出這麼多個數,但實際上你數一下在這個範圍内,其實隻包含了2的N次方加1,然後再減1這麼多個數,原因就是其中的兩個二進制狀态對應了同一個真值阿。對真值好,這一點大家需要注意,那接下來我們再來看用原碼表示定點小數的一個表示的範圍,總共N加一個位,其中一個位表示符号,後邊的N位表示實際的數值,那麼這N個2進制位所能表示的一個,呃,絕對值的範圍應該是最小是0,就是所有都是0,然後最大的話就是所有都是一所有的V都是1,那麼它所對應的值就應該是2的負一次方,加上2的-2次方一直加加++到2的負N次方,因為我們總共有N位,那麼這個值加出來就應該是=1-2的負N次方,是以當我們規定小數點的位置在這個地方的時候啊,這N個倍數所能表示的範圍絕對值的範圍就應該是0~1-2的負N次方好,如果再加上符号為正負的話,那它所能表示的最小值就應該是這樣的,一個值最大值就應該是1-2的,負N次方是小數和之前一樣我們在表示真摯名的首勝。同樣也可以有證明和複0這樣的兩種形式好,那這就是用元碼表示定點整數和定點小數的一個方法,還有表示的範圍,大家需要特别注意,真值名是有兩種表示形式的好,接下來看反馬反馬其實很簡單,當我們得到源碼之後啊可以判斷,如果說原碼的符号位為0,也就是是一個正數,那麼反碼和原碼其實是相同的,而如果說符号位為1,那麼我們隻需要在原碼的基礎上把數值位全部取反就可以,比如像剛才鄭19這個數的原碼是這樣子,那由于此時符号位為0,它是一個正數,是以這個數的反碼表示和原碼表示是一樣的,而-19這個數為1,是以我們需要把後邊的這些數值位在源碼的基礎上全部取反,就是0變成11變成0全部取法,這樣的話就得到了-19的一個砝碼好再來看,小數小數也是一樣的,正的0.75是以和原碼是一樣的衣服好看。不持久的一個砝碼好再來看小數小數也是一樣的,正的0.75由于符号位為0,是以砝碼和源碼是一樣的,保持不變,而負的0.75由于符号位為一是以反碼的這些數值位,需要在源碼基礎上全部選擇0.11好,是以這就是定點整數和定點小數的砝碼,表示我們需要先得到源碼,然後再轉變成砝碼,那顯然砝碼和源碼之間是有這種11對應的關系的,是以N加一位的砝碼整數它的表示範圍和源碼肯定也是一緻的,同樣的砝碼也會擁有複0和正0這樣的兩種形式源碼的證明是全為0,那砝碼的證明也是全部為0元,馬地縛靈是首位,唯一後面全部是0,那根據我們轉換的規則,由于符号位為1,是以啊-0所對應的砝碼就應該是一後邊全部變成一除了反碼的整數之外,砝碼的小樹和源碼也是一一對應的,是以砝碼的小樹的一個表示範圍與原碼也是相同的,同樣富臨河鎮臨會有兩種形式這就是所謂的方法嗎。有兩種形式好,那這就是所謂的砝碼那砝碼啊,隻是源碼中變成無碼的這個過程當中的一個中間狀态,其實在實際當中砝碼并沒有太大的用處,計算機硬體不會使用砝碼直接進行加減乘除這些運算好的,那這就是砝碼,接下來我們要探讨如何基于砝碼來得到補碼,對于一個正數來說正數的補碼,它所對應的不嘛其實就是圓滿,而對于一個負數來說複數所對應的不滿,我們可以用法碼的末位加1這樣的方式迅速地進行轉化,那加1的過程中我們需要考慮到敬畏的問題,首先來看用補碼來表示釘點的整數十九這個數來說他的源碼是這樣子由于他是一個證書是以這個其實和原碼是一模一樣的十九由于這個隻是一個符号為一是以我們在這個真值所對應的。是以我們在求這個真值所對應的補碼的時候,就需要先把源碼的這些尾數全部取反得到砝碼,然後再在砝碼的末尾這一位再加上一個一是以-19所對應的補碼就應該是這個樣子啊,比起砝碼來說,末位加了一個一好再來看一個M碼表示的小數正的0.75,這個小數它的源碼是這樣,那由于這是一個正數,是以它所對應的補碼形式和源碼是一模一樣的,我們隻需要把源碼照搬下來就可以然後再來看負的0.75,由于它是一個負數,是以我們首先需要把源碼的尾數部分全部取法,然後再在砝碼的末位加上一個1,那需要注意進位的問題,末位的這兩個1相加等于0往高位進,11+1又=0,再往高位進1,那直到進到這個位置林加一等于幾就不會再為了這就是負的零點七五十五碼形式小節中。這是它所對應的補碼形式,在這個小結中,大家先把注意力放在如何在各種馬之間進行轉換,先放在這個地方,下一小節我們再來解釋古馬這些東西有什麼作用,好接下來我們再來看一下補碼,是不是也會有正0和-0這樣的啊問題,首先看證明由于符号位為0,是以按照剛才我們提出的這個規則符号位為0,那麼它所對應的補碼正0,所對應的補碼和源碼是一樣的,都是0好再來看-0,由于符号位為1,是以我們把它看為一個負數,是以-0它所對應的補碼形式應該是先把它轉換成砝碼,然後再在砝碼的末位加1,也就是8個1的末位再加一個1,那這個加法的結果應該是8個0,然後更高位,第9個位會進一個一但是由于這地方我們規定機器字長隻有八個we是以我們向更高未竟的這個一奇石會被丢棄而第八位留下的這八個零是不是和我們剛才推出的震林這種狀态。用補碼的形式來表示真值,零它隻會有一種表示形式,就是全0這種方式好,那問題來了,源碼當中有兩個二進制的狀态會對應0這個真值,而在補碼中隻有其中一種狀态表示0,那多出來的這種二進制狀态怎麼辦呢,對于這個問題我們有一個特别的規定,對于定點整數的補碼來說,如果符号位為1,然後後續這些都是0的話,那麼我們規定這個補碼,它所對應的數值是負的2的7次方,這有7位表示數值和-2的7次方,這個7是相對應的,那還記不記得對于8位的元碼和反碼來說,8位所能表示的最小數值應該是負的2的7次方減1對吧?而對于補碼來說它可以多表示一個負數,最小可以表示到負的2的7次方是以如果機器字長是人家一位數的表示範圍應該是這樣的會比原碼和food二的這點大家也注意。用補碼表示定點的整數,而如果用補碼表示定點小數也有類似的問題,由于正0和-0隻有一種表示形式,是以多出來的這個二進制狀态也就是符号位為一後續全為0,這種狀态,我們會規定它所對應的值是負一進制碼和砝碼所能表示的最小值,應該是負的1-2的負N次方是這樣的一個值而補碼可以多表示一個負1,而是以同樣是N加一個比特位補碼會比原碼反碼的表示範圍更多一個數,不管是整數還是小數都這樣好,剛才我們已經知道了對于給定的一個正數或者負數,如何從源碼轉換到補碼,如果我們知道了一個正數的補碼,那麼想要知道它所對應的源碼是很容易的,因為正數的原碼和補碼是相同的,但是如果給你一個負數的補碼符号位為1,那麼想要推出它所對應的原碼應該怎麼辦呢?其實這個逆向轉換的過程和正向轉換的過程是一樣的,同樣是讓美術全部取反,然後末位加1号來看一下想要的未來 o(╥﹏╥)o (つД`)(ノへ ̄、)

2.2.1 定點數的表示 原碼 反碼 補碼 移碼

繼續閱讀