国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

【深入淺出-JVM】(2):原碼、反碼、補碼

qpwoeiru96 / 2393人閱讀

摘要:正數用填補,負數用填補。注不同的環境填補方式可能不同低位右移溢出則舍棄該位。感謝您的耐心閱讀,如果您發現文章中有一些沒表述清楚的,或者是不對的地方,請給我留言,您的鼓勵是作者寫作最大的動力。

計算機中有補碼表示 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中有三個位移運算: :右移 >>>:無符號右移 ...

    tunny 評論0 收藏0
  • C語言中數據的存儲

    摘要:這里強調一下,之前講過一個操作符按位取反操作符,區別一下他倆,按位取反操作符是針對二進制數每一位全部都取反,包括符號位。 目錄 傳統藝能?過渡區?正片開始?數據類...

    LeanCloud 評論0 收藏0
  • 從Java中的取反號‘~’看原碼反碼補碼

    摘要:首先,存儲的是有符號數,在計算機中,有符號數通常是使用補碼存儲的,也不例外。先來看看什么叫原碼,反碼,補碼。例如原反補原反補分析所以回到一開始的問題,在計算機中是以補碼存儲的。 緣起 一次在寫測試程序的時候,隨手對2取了一個反,當時代碼大意如下: public static void main(String[] args) { int a = 2; Sy...

    Rainie 評論0 收藏0
  • Java位運算符淺析

    摘要:在學習源碼中,發現有大量使用位運算符,這樣做的目的是為了節約內存開銷和加快計算效率。位運算符,這個位代表這什么位二進制位簡稱位,是二進制記數系統中表示小于的整數的符號,一般用或表示,是具有相等概率的兩種狀態中的一種。 在學習源碼中,發現有大量使用位運算符,這樣做的目的是為了節約內存開銷和加快計算效率。 位運算符,這個位代表這什么? 位:二進制位簡稱位,是二進制記數系統中表示小于2的整數...

    zhaofeihao 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<