當前位置:首頁 » 編程語言 » java位與運算

java位與運算

發布時間: 2025-02-08 18:48:22

java中&和&&的區別

java中的&&具有「短路」現象,也就是說,當&&左邊的表達式為假時,就不再計算剩餘的&&右邊的值是否為真。而&則不同,就算&&左邊的表達式是假,它還是會計算&右邊的表達式。

而||和|也是一樣道理的。

希望我的回答能給你點幫助。謝謝

❷ 求:JAVA中常用位運算符及其用法詳解

位運算符
位運算是以二進制位為單位進行的運算,其操作數和運算結果都是整型值。
位運算符共有7個,分別是:位與(&)、位或(|)、位非(~)、位異或(^)、右移(>>)、左移(<<)、0填充的右移(>>>)。
位運算的位與(&)、位或(|)、位非(~)、位異或(^)與邏輯運算的相應操作的真值表完全相同,其差別只是位運算操作的操作數和運算結果都是二進制整數,而邏輯運算相應操作的操作數和運算結果都是邏輯值。

位運算示例
運算符 名稱 示例 說明
& 位與 x&y 把x和y按位求與
| 位或 x|y 把x和y按位求或
~ 位非 ~x 把x按位求非
^ 位異或 x^y 把x和y按位求異或
>> 右移 x>>y 把x的各位右移y位
<< 左移 x<<y 把x的各位左移y位
>>> 右移 x>>>y 把x的各位右移y位,左邊填0

舉例說明:
(1)有如下程序段:
int x = 64; //x等於二進制數的01000000
int y = 70; //y等於二進制數的01000110
int z = x&y //z等於二進制數的01000000
即運算結果為z等於二進制數01000000。位或、位非、位異或的運算方法類同。
(2)右移是將一個二進制數按指定移動的位數向右移位,移掉的被丟棄,左邊移進的部分或者補0(當該數為正時),或者補1(當該數為負時)。這是因為整數在機器內部採用補碼表示法,正數的符號位為0,負數的符號位為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。要透徹理解右移和左移操作,讀者需要掌握整數機器數的補碼表示法。
(3)0填充的右移(>>>)是不論被移動數是正數還是負數,左邊移進的部分一律補0。

❸ java中&和&&是怎麼運算的

& 和 && 相同點:
都表示「與」操作。這里的「與」和數學中的「與或非」中的「與」意義相同,都遵循「一假必假」原則。即「與」符號兩邊的元素只要有一個為假,"與"操作執行後的結果就為假。

& 和 && 的區別:
1)& 表示「按位與",這里的」位「是指二進制位(bit)。
例:十進制數字8 轉化為二進制是:1000 ;數字9 轉化為二進制是1001 。
則如有以下程序:
public class Test {
public static void main(String[] args) {
System.out.println(9 & 8);
}
}
輸出結果應該是:8
原因:1001 & 1000 = 1000 。 計算機中一般1表示真,0表示假。最左邊一位1&1=1,最右邊一位1&0 = 0.

2) && 表示邏輯」與「 ,即java中的boolean值才可以存在於&&符號的左右兩側。
true && false = false ,true && true = true , 依舊是"一假必假"。
值的注意的是:&& 符號有所謂的「短路原則」,當 A && B 出現時,如果A經判斷是假,那麼B表達式將不會獲得執行或被判斷的機會。直接結果就為假。

註:關於十進制與二進制的轉換,簡單的說每四位可以遵循」8421「原則,1001即8+1=9,1011即8+2+1=11

❹ java運算中&是什麼意思,比如a=1;b=2;a&b=多少

&是位操作符,「按位與」;1轉成二進制 01;2轉成二進制 10;a&b=00轉成十進制為0。

位運算符有:&(按位與)、|(按位或)、^(按位異或)、~ (按位取反)。優先順序從高到低,依次為~、&、^、|。

按位與運算有兩種典型用法,一是取一個位串信息的某幾位,如以下代碼截取x的最低7位:x & 0177。二是讓某變數保留某幾位,其餘位置0,如以下代碼讓x只保留最低6位:x = x & 077。

Java 的表達式就是用運算符連接起來的符合Java 規則的式子,運算符的優先順序決定了表達式中運算執行的先後順序。



(4)java位與運算擴展閱讀:

整數算術運算的異常是由於除零或按零取模造成的。它將引發一個算術異常。下溢產生零,上溢導致越界。例如:加1超過整數最大值,取模後,變成最小值。

一個op=賦值運算符,和上表中的各雙目整數運算符聯用,構成一個表達式。整數關系運算符<,>,<=,>=,==和!=產生boolean類型的數據。

❺ Java中&是什麼意思

移位運算符
移位運算符面向的運算對象也是二進制的「位」。可單獨用它們處理整數類型(主類型的一種)。左移位運
算符(<<)能將運算符左邊的運算對象向左移動運算符右側指定的位數(在低位補0)。「有符號」右移位
運算符(>>)則將運算符左邊的運算對象向右移動運算符右側指定的位數。「有符號」右移位運算符使用了
「符號擴展」:若值為正,則在高位插入0;若值為負,則在高位插入1。Java 也添加了一種「無符號」右
移位運算符(>>>),它使用了「零擴展」:無論正負,都在高位插入0。這一運算符是C 或C++沒有的。
若對char,byte 或者short 進行移位處理,那麼在移位進行之前,它們會自動轉換成一個int。只有右側的
5 個低位才會用到。這樣可防止我們在一個int 數里移動不切實際的位數。若對一個long 值進行處理,最後
得到的結果也是long。此時只會用到右側的6 個低位,防止移動超過long 值里現成的位數。但在進行「無
符號」右移位時,也可能遇到一個問題。若對byte 或short 值進行右移位運算,得到的可能不是正確的結果
(Java 1.0 和Java 1.1 特別突出)。它們會自動轉換成int 類型,並進行右移位。但「零擴展」不會發
生,所以在那些情況下會得到-1 的結果。可用下面這個例子檢測自己的實現方案:

public class URShift {
public static void main(String[] args) {
int i = -1;
i >>>= 10;
System.out.println(i);
long l = -1;
l >>>= 10;
System.out.println(l);
short s = -1;
s >>>= 10;
System.out.println(s);
byte b = -1;
b >>>= 10;
System.out.println(b);
}
}

熱點內容
租完伺服器怎麼搭建ip 發布:2025-02-08 21:11:47 瀏覽:394
c語言賦值後 發布:2025-02-08 21:08:40 瀏覽:756
dosphp 發布:2025-02-08 21:01:27 瀏覽:703
sm3雜湊演算法 發布:2025-02-08 20:55:00 瀏覽:285
抽獎源碼帶後台 發布:2025-02-08 20:33:54 瀏覽:225
歐博中央空調原始密碼是多少 發布:2025-02-08 20:33:47 瀏覽:335
運動使人快樂緩解壓力 發布:2025-02-08 20:27:01 瀏覽:98
linux命令大文件 發布:2025-02-08 20:25:06 瀏覽:897
C蟻群演算法 發布:2025-02-08 20:21:25 瀏覽:513
私人搭建伺服器能幹嘛 發布:2025-02-08 20:21:24 瀏覽:596