1. 程式人生 > 其它 >自學java第十七天

自學java第十七天

位運算子:
位運算是以二進位制位為單位進行的運算,其運算元和運算結果都是整型值。
位與'&',位或'|',位非'~',位異或'^',右移'>>',左移'<<',0填充的右移'>>>'
位運算的位與'&',位或'|',位非'~',位異或'^'與邏輯運算的相應操作的真值表完全相同,其差別只是位運算操作的運算元和運算結果都是二進位制整數,而邏輯運算相應操作的運算元和運算結果都是邏輯值boolean型。
         
下邊為位&運算:
  int a = 15;   //x等於二進位制數的00001111
  int b = 6;   //y等於二進位制數的00000110
  int c = x&y   //z等於二進位制數的00000110
結果為:二進位制數的00000110
右移是將一個二進位制數按指定移動的位數向右移位,移掉的被丟棄,左邊移進的部分或者補0(當該數為正時),或者補1(當該數為負時)。這是因為整數在機器內部採用補碼錶示法,正數的符號位為0,負數的符號位為1。
    將一個數左移"<<"會使該值乘以2的冪。
   將一個數右移>>"會使該值除以2的冪。
   右移(補零)運算子,即無符號右移,">>>"永遠不會產生負號,因為其符號位總是被補零。 不論被移動數是正數還是負數,左邊移進的部分一律補0。

  1. System.out.println(1<<3);
  2. System.out.println(8>>3);

輸出為:8
1

  int x = 70;  //x等於二進位制數的01000110
  int y = 2;
  int z = x>>y //z等於二進位制數的00010001
  即運算結果為z等於二進位制數00010001,即z等於十進位制數17。
  int x = -70; //x等於二進位制數的11000110
  int y = 2;
  int z = x>>y //z等於二進位制數的11101110
  即運算結果為z等於二進位制數11101110,即z等於十進位制數-18。
  右移和左移操作,是整數機器數的補碼錶示法。
&運算子規定必須訊號A和B都被充電,其結果才是充電。(1表示充電,0表示未充電)
|運算子規定只要訊號A或B被充電,輸出結果就是充電。
^異或(XOR)運算子規定如果訊號A或B之一被充電,但是訊號A和B不是同時被充電,則結果為充電。
~運算子也稱為按位求補,它翻轉所有的充電狀態值。