回覆列表
-
1 # 用戶1965557481736171
-
2 # 用戶6471629630988
假設你使用short byte(帶符號字節類型) 首先,-3的原碼(1000 0011)【最高位符號位】反碼:1111 1100 【符號位不變,按位取反】補碼:1111 1101 【反碼+1】
-3的補碼:11111101反碼加一
1、正數的補碼錶示:
正數的補碼 = 原碼
負數的補碼 = {原碼符號位不變} + {數值位按位取反後+1} or
= {原碼符號位不變} + {數值位從右邊數第一個1及其右邊的0保持不變,左邊安位取反}
以十進制整數+97和-97為例:
+97原碼 = 0110_0001b
+97補碼 = 0110_0001b
-97原碼 = 1110_0001b
-97補碼 = 1001_1111b
2、純小數的原碼:
純小數的原碼如何得到呢?方法有很多,在這裡提供一種較為便於筆算的方法。
以0.64為例,通過查閱可知其原碼為0.1010_0011_1101_0111b。
90的原碼為:0000 0000 0101 1010,對其取反加1即得-90為:1111 1111 1010 0110 這是16位時的情況。
如果是其它位數,必須在相應的位上添加0或1。