1. 程式人生 > >JAVA有關位運算的全套梳理

JAVA有關位運算的全套梳理

一、在計算機中資料是如何進行計算的?

1.1:java中的byte型資料取值範圍

我們最開始學習java的時候知道,byte型別的資料佔了8個bit位,每個位上或0或1,左邊第一位表示符號位,符號位如果為1表示負數,為0則表示正數,因此要推算byte的取值範圍,只需要讓數值位每一位上都等於1即可。

我們來用我們的常規思維來分析下byte型別的取值範圍:

圖1

如果按照這種思路來推算,七個1的二進位制數轉換為十進位制是127,算上符號位,取值範圍應為:-127~+127,但事實上我們知道,byte的取值範圍是-128~127,這裡先打個問號,接著往下看。

現在讓我們計算下byte型別的7加上byte型別的-2是多少:

圖2

誒?跟我們預想的不一樣,因為我們是知道7和-2的和應該是5才對,結果應該表示為:00000101,但事實上通過圖2的結果來看確實跟預想的不一樣,所以計算機在做計算的時候,肯定不是表面上的符號位+數值位的方式進行的計算的。

1.2:原碼,反碼,補碼

我們先來看下定義: