補碼怎么算原碼(補碼怎么算)

導讀您好,現在軟糖來為大家解答以上的問題。補碼怎么算原碼,補碼怎么算相信很多小伙伴還不知道,現在讓我們一起來看看吧!1、-3的補碼:111111...

您好,現在軟糖來為大家解答以上的問題。補碼怎么算原碼,補碼怎么算相信很多小伙伴還不知道,現在讓我們一起來看看吧!

1、-3的補碼:11111101反碼加一正數的補碼表示:正數的補碼 = 原碼負數的補碼 = 原碼符號位不變} + 數值位按位取反后+1} or= 原碼符號位不變} + 數值位從右邊數第一個1及其右邊的0保持不變,左邊安位取反}以十進制整數+97和-97為例:+97原碼 = 0110_0001b+97補碼 = 0110_0001b-97原碼 = 1110_0001b-97補碼 = 1001_1111b2、純小數的原碼:純小數的原碼如何得到呢?方法有很多,在這里提供一種較為便于筆算的方法。

2、以0.64為例,通過查閱可知其原碼為0.1010_0011_1101_0111b。

3、操作方法:將0.64 * 2^n 得到X,其中n為預保留的小數點后位數(即認為n為小數之后的小數不重要),X為乘法結果的整數部分。

4、此處將n取16,得X = 41943d = 1010_0011_1101_0111b即0.64的二進制表示在左移了16位后為1010_0011_1101_0111b,因此可以認為0.64d = 0.1010_0011_1101_0111b 與查詢結果一致。

5、再實驗n取12,得X = 2621d = 1010_0011_1101b 即 0.64d = 0.1010_0011_1101b,在忽略12位小數之后的位數情況下,計算結果相同。

6、3、純小數的補碼:純小數的補碼遵循的規則是:在得到小數的源碼后,小數點前1位表示符號,從最低(右)位起,找到第一個“1”照寫,之后“見1寫0,見0寫1”。

7、以-0.64為例,其原碼為1.1010_0011_1101_0111b則補碼為:1.0101_1100_0010_1001b當然在硬件語言如verilog中二進制表示時不可能帶有小數點(事實上不知道哪里可以帶小數點)。

8、4、一般帶小數的補碼一般來說這種情況下先轉為整數運算比較方便-97.64為例,經查詢其原碼為1110_0001.1010_0011_1101_0111b筆算過程:-97.64 * 2^16 = -6398935 = 1110_0001_1010_0011_1101_0111b,其中小數點在右數第16位,與查詢結果一致。

9、則其補碼為1001_1110_0101_1100_0010_1001b,在此采用 負數的補碼 = 原碼符號位不變} + 數值位按位取反后+1} 方法5、補碼得到原碼:方法:符號位不動,幅度值取反+1 or符號位不動,幅度值-1取反-97.64補碼 = 1001_1110(.)0101_1100_0010_1001b取反 = 1110_0001(.)1010_0011_1101_0110b+1 = 1110_0001(.)1010_0011_1101_0111b 與查詢結果一致,就是最高位,最左面的第一位;其它位,就是剩下的7位由于運算器進行加法是最快的,因此,使用補碼是為了加快計算計算機不會減法`所以用補碼把減法變成加法` 你看的數一般就說"正數的補碼是其本身,負數的補碼是原碼按位取反后1,符號位就是最高位等等`。

本文就為大家分享到這里,希望小伙伴們會喜歡。

免責聲明:本文由用戶上傳,如有侵權請聯系刪除!