當前位置:首頁 » 操作系統 » 源碼的移碼

源碼的移碼

發布時間: 2025-05-09 21:25:01

『壹』 負數的補碼怎麼求

就比如-9 補碼是11110111。

9的源碼為00001001,如果是負數的話,補碼為最高位置1,

其餘取反也就是11110110,

然後在最低位加1即可即11110111。

『貳』 原碼,反碼,補碼和移碼: 原碼:1001101,反碼,補碼,移碼各是多少

解:首位數字表示正負不做變(1為負數,0為正數)
反碼:1110010(正數反碼等於原數,題中為負數,則除首位數對應取反)
補碼:1110011(得出反碼數基礎上末位加一)
移碼:0110011(補碼符號位第一位數字取反)

反碼是數值存儲的一種,多應用於系統環境設置,如linux平台的目錄和文件的默認許可權的設置umask,就是使用反碼原理。

補碼(2's complement)是一種用二進製表示有號數的方法,也是一種將數字的正負號變號的方式。

移碼(又叫增碼)是符號位取反的補碼,一般用指數的移碼減去1來做浮點數的階碼,引入的目的是為了保證浮點數的機器零為全0。

(2)源碼的移碼擴展閱讀

補碼的設計目的是:

1.使符號位能與有效值部分一起參加運算,從而簡化運算規則.

2.使減法運算轉換為加法運算,進一步簡化計算機中運算器的線路設計 所有這些轉換都是在計算機的最底層進行的,而在我們使用的匯編、C等其他高級語言中使用的都是原碼。

小數和分數的補碼:

1.十進制分數補碼可以先將分子和分母分別表示成二進制數,然後計算出二進制小數,再按下面第三步的方法將求出小數的補碼形式。

2.十進制小數的補碼也應該先將其轉換成二進制小數,再按下面第三步的方法將求出小數的補碼形式。

『叄』 原碼,反碼,補碼和移碼: 原碼:1001101,反碼,補碼,移碼各是多少

反碼:1,110010(除符號位以外,各位取反)

補碼:1,110011(除符號位以外,各位取反,末位加一)

移碼:0,110011(對補碼符號位取反)

注意:

1、首先判斷原碼的正負,因為對於正數,其原碼、補碼反碼表示形式相同(符號位為0,數值部分與真值相同)

2、對於反碼和補碼,要區別:已知[x補],求[-x補]的題目(連同符號位各位取反,末位加一)

(3)源碼的移碼擴展閱讀:

原碼、反碼、補碼、移碼的運算方法

運算過程:原碼->反碼->補碼->移碼

原碼 :二進制(開頭第一個表示符號0正1負)

反碼 :在原碼的基礎上,符號位不動,其他位取反 ---注意,任何正數的源碼=反碼=補碼,而負數都是通過補碼表示的。

補碼 :在反碼的基礎上,運算+1 ---注意,任何正數的源碼=反碼=補碼,而負數都是通過補碼表示的。

公式:兩數補碼的和==兩數和的補碼。

移碼 :在補碼的基礎上,符號位取反

例如:

例子3 10+(-10)=0 (使用補碼)
10(十進制) --- 00001010(源碼)----同源碼(反碼)----同源碼(補碼)
-10(十進制) --- 10001010(源碼)----11110101(反碼)----11110110(補碼)

00001010+ 10的源碼----注意正數用補碼(值等同於源碼)
11110110 -10的補碼----注意負數用補碼
---------
00000000 得到了0的補碼

『肆』 原碼,反碼,補碼,移碼

寫在前面:該文章為本人學習中寫的一些筆記和心得,發表出來主要是為了記錄自己的學習過程。本人才疏學淺,筆記難免存在不足甚至紕漏,但會不定期更新。

基本知識:假設有一個n位的二進制數

則這個二進制數共有 種狀態,這個數最大為

反過來 ,寫成二進制為1000 0000,一共有8位,1後面 7 個小數

以下舉例均為n位數,實例為8位數

原碼

簡單直接的二進制,以下以定點數為例。

定點純小數: 0 100 0000 首位為符號位,0為正1為負,這里表示0.1(10)

定點純整數: 0 000 0001 這里表示1(10)

因為有符號位,所以有正負零之分 0 000 0000 和 1 000 0000

數據范圍:-127~127(後面7位全為1)//公式表達為

特點:原碼不適合加減,但 適合乘除

反碼

正數的反碼與其原碼相同;負數的反碼是對其符號位後的原碼逐位取反,符號位不變(為1)

反碼能表達的數據范圍:與源碼一樣

補碼

目的:方便計算機進行加減

特點:在機器中適合加減的數字表示方式

補碼能實現計算機"加上負數"的本質原理是模運算,也就是A減去B等於A加上B相對於A的補數再求模。就好像時鍾順時針撥動3h和逆時針撥動9h得到的結果一樣。

二進制求補碼:

補數=(原數+模)(mod 模),很明顯,若原碼是正,則補碼是它本身,對於正數完全不用考慮求補碼。

對於計算機,因為兩個相加的數的位數相同(n),且和不能超過n+1位,因此應該取的模是100000...(n個0)。

因此對於n位純小數,它的模(十進制)為2 ,對於n位純整數,它的模為2 n

模 : (1 0 000 0000)

原碼: ( 0 000 0000)

注意到,盡管符號位沒有任何數值信息,這里取模依然把符號位考慮進去了,原因是我們可以通過定義補碼,來使第一個符號位參與計算機計算,從而得到想要的結果。

(同時,把符號位算進去可以讓我們在用數學公式法求二進制補數時,直接從結果得到補碼

例: x= -0.1011

[x]補=10+x=10.0000-0.1011=1.0101

原來是要取模得補數為0.0101(2),但正好首位的1可以表示原數的負號,因此可直接讀出補碼為1 0101

因此對於補碼,符號位既起指示正負號的作用,又參與運算。

另外,區別於原碼有兩個0(正負0),在補碼的規定中,只有一個0(00000...的正0,因為原碼也全是0),而1 0000...可以表示-1(補碼純小數)或-2 n-1 (補碼純整數)

//可以這么記(以純整數為例):因為後面n-1個0取反後為n-1個1,加1後為2 n-1 (10),前面一個1表示負數,因此補碼能表示-2 n-1

補碼怎麼來:原碼為正,補碼與原碼相同;原碼為負,後面的位數為原碼取反加1

移碼

目的:為了方便計算機比大小,消除符號位對計算機的干擾

原理是把負數部分全部移到非負數方向,也就是說要把第一位符號位的意義給消除掉。消除方法為:對於補碼的正數,符號位由0變為1,增大;對於補碼的負數,符號位概念消除,在計算機中被定義為正數,又為了確保原負數小於原正數,符號位由1變為0。

為了保證每個數之間大小關系不變,要用補碼來轉換成移碼,用原碼來轉換的話,負數之間的大小關系會反轉。

數學公式:
宏觀上來看是把居中的整個數軸平移到了非負半軸上,每個數之間的大小關系不變。

純小數[X] =1+X

純整數 [X] = (一般標准)

移碼怎麼來: 移碼和補碼尾數相同,符號位相反 (也就是補碼 首位的1->0 ;0->1)

因為移碼從補碼那裡來,所以也能額外多表示一個數

熱點內容
javaodbc資料庫連接 發布:2025-05-10 05:39:21 瀏覽:121
sqlserver還原資料庫失敗 發布:2025-05-10 05:28:24 瀏覽:480
安卓哪個能錄內部聲音 發布:2025-05-10 05:28:17 瀏覽:326
安卓大屏如何查看解析度 發布:2025-05-10 05:11:21 瀏覽:467
酷派手機密碼是多少 發布:2025-05-10 05:04:17 瀏覽:974
editpluspython 發布:2025-05-10 04:56:53 瀏覽:740
linux串口驅動開發 發布:2025-05-10 04:55:37 瀏覽:597
游戲版微信伺服器維護中什麼意思 發布:2025-05-10 04:54:42 瀏覽:818
sqlserver連接測試 發布:2025-05-10 04:49:43 瀏覽:696
中國電信的電視維護密碼是多少 發布:2025-05-10 04:36:52 瀏覽:590