摘要:正數用填補,負數用填補。注不同的環境填補方式可能不同低位右移溢出則舍棄該位。感謝您的耐心閱讀,如果您發現文章中有一些沒表述清楚的,或者是不對的地方,請給我留言,您的鼓勵是作者寫作最大的動力。
計算機中有補碼表示 0
0 為正數
原碼 00000000 00000000 00000000 00000000 反碼 00000000 00000000 00000000 00000000 正數反碼等于原碼 補碼 00000000 00000000 00000000 00000000 正數補碼等于原碼
0 為負數
原碼 10000000 00000000 00000000 00000000
反碼 11111111 11111111 11111111 11111111 負數反碼等于原碼符號位不變,其余取反
補碼 00000000 00000000 00000000 00000000 負數補碼等于反碼+1
用補碼
1-1 = 1 + (-1) = [0000 0001]原 + [1000 0001]原 = [0000 0001]補 + [1111 1111]補 = [0000 0000]補=[0000 0000]原
用反碼
1 - 1 = 1 + (-1) = [0000 0001]原 + [1000 0001]原= [0000 0001]反 + [1111 1110]反 = [1111 1111]反 = [1000 0000]原 = -0
數值 | 原碼 | 反碼 | 補碼 |
---|---|---|---|
+0 | 0000 0000 | 0000 0000 | 0000 0000 |
-0 | 1000 0000 | 1111 1111 | 0000 0000 |
負數原碼轉補碼,最高位不變,其余取反,然后 +1
10000001
11111110
11111111
負數補碼轉原碼,最高位不變,其余取反,然后+1 補碼->反碼->原碼->反碼->補碼 ,(二進制數,先-1再取反和先取反后+1,結果一樣)
11111111
10000000
10000001
負數反碼轉原碼
符號位不變,其余取反
11111111
10000000
區別:
8位二進制, 使用原碼或反碼表示的范圍為[-127, +127], 而使用補碼表示的范圍為[-128, 127].
補碼可以多表示一個范圍,其實是利用補碼 10000000 的原碼是 = -128
原碼最大的問題就是 一個數加上他的相反數不等于 0
已知補碼,求原碼的負數的補碼:符號位和數值位都取反,末位再加1
補碼 常用概念左移
左移的規則只記住一點:丟棄最高位(符號位),0補最低位
右移
左邊空出的位用0或者1填補。正數用0填補,負數用1填補。注:不同的環境填補方式可能不同;
低位右移溢出則舍棄該位。
無符號右移
左邊空出的位用0填補,低位右移溢出則舍棄該位。
感謝您的耐心閱讀,如果您發現文章中有一些沒表述清楚的,或者是不對的地方,請給我留言,您的鼓勵是作者寫作最大的動力。
作 者 : @mousycoder
原文出處 : http://mousycoder.com/thinkin...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/75358.html
摘要:我們來看一個特殊的運算反碼反碼反碼原碼。補碼為了解決反碼的問題就出現了補碼。用原碼表示為用反碼表示為用補碼表示為,表示的補碼左移一位后為,該補碼對應的反碼為該反碼對應的原碼為符號位不變,其他位取反,為,表示。 在平時看各種框架的源碼的過程中,經常會看到一些位移運算,所以作為一個Java開發者是一定掌握位移運算的。 正數位移運算 Java中有三個位移運算: :右移 >>>:無符號右移 ...
摘要:首先,存儲的是有符號數,在計算機中,有符號數通常是使用補碼存儲的,也不例外。先來看看什么叫原碼,反碼,補碼。例如原反補原反補分析所以回到一開始的問題,在計算機中是以補碼存儲的。 緣起 一次在寫測試程序的時候,隨手對2取了一個反,當時代碼大意如下: public static void main(String[] args) { int a = 2; Sy...
摘要:在學習源碼中,發現有大量使用位運算符,這樣做的目的是為了節約內存開銷和加快計算效率。位運算符,這個位代表這什么位二進制位簡稱位,是二進制記數系統中表示小于的整數的符號,一般用或表示,是具有相等概率的兩種狀態中的一種。 在學習源碼中,發現有大量使用位運算符,這樣做的目的是為了節約內存開銷和加快計算效率。 位運算符,這個位代表這什么? 位:二進制位簡稱位,是二進制記數系統中表示小于2的整數...
閱讀 1052·2021-10-11 10:59
閱讀 3605·2021-09-26 09:55
閱讀 897·2019-08-30 15:55
閱讀 2653·2019-08-30 15:44
閱讀 438·2019-08-30 14:06
閱讀 685·2019-08-30 11:26
閱讀 3342·2019-08-30 10:49
閱讀 2481·2019-08-29 12:53