按位與java
① 請問java語言中按位與運算符「&」,如果兩個運算數都是1,則結果為1。其他情況下,結果均為0。這句
按位與,顧名思義,是兩個數的二進制位相與得到結果,相與的規律就是樓主所說的規律。而不是整個數相與。例子如下(括弧里為八位二進製表示):
1 & 1 = (00000001) & (00000001) = (00000001) = 1
2 & 3 = (00000010) & (00000011) = (00000010) = 2
注意負數在計算機中用補碼表示,補碼的演算法為原碼按位取反加1,比如 -1 = (11111110) + (00000001)
=(11111111)
建議樓主去讀些關於計算機的基礎知識。
② JAVA中四個二進制位從操作符即(&按位與、|按位貨、^按位異或、~按位取反)
首先回答你問的問題:
按位與運算符(&)
參加運算的兩個數據,按二進制位進行「與」運算。
運算規則:0&0=0; 0&1=0; 1&0=0; 1&1=1;
即:兩位同時為「1」,結果才為「1」,否則為0
例如:3&5 即 0000 0011 & 0000 0101 = 0000 0001 因此,3&5的值得1。
另,負數按補碼形式參加按位與運算。
「與運算」的特殊用途:
(1)清零。如果想將一個單元清零,即使其全部二進制位為0,只要與一個各位都為零的數值相與,結果為零。
(2)取一個數中指定位
方法:找一個數,對應X要取的位,該數的對應位為1,其餘位為零,此數與X進行「與運算」可以得到X中的指定位。
例:設X=10101110,
取X的低4位,用 X & 0000 1111 = 0000 1110 即可得到;
還可用來取X的2、4、6位。
按位或運算符(|)
參加運算的兩個對象,按二進制位進行「或」運算。
運算規則:0|0=0; 0|1=1; 1|0=1; 1|1=1;
即 :參加運算的兩個對象只要有一個為1,其值為1。
例如:3|5 即 0000 0011 | 0000 0101 = 0000 0111 因此,3|5的值得7。
另,負數按補碼形式參加按位或運算。
「或運算」特殊作用:
(1)常用來對一個數據的某些位置1。
方法:找到一個數,對應X要置1的位,該數的對應位為1,其餘位為零。此數與X相或可使X中的某些位置1。
例:將X=10100000的低4位置1 ,用 X | 0000 1111 = 1010 1111即可得到。
異或運算符(^)
參加運算的兩個數據,按二進制位進行「異或」運算。
運算規則:0^0=0; 0^1=1; 1^0=1; 1^1=0;
即:參加運算的兩個對象,如果兩個相應位為「異」(值不同),則該位結果為1,否則為0。
「異或運算」的特殊作用:
(1)使特定位翻轉找一個數,對應X要翻轉的各位,該數的對應位為1,其餘位為零,此數與X對應位異或即可。
例:X=10101110,使X低4位翻轉,用X ^ 0000 1111 = 1010 0001即可得到。
(2)與0相異或,保留原值 ,X ^ 0000 0000 = 1010 1110。
從上面的例題可以清楚的看到這一點。
取反運算符(~)
參加運算的一個數據,按二進制位進行「取反」運算。
運算規則:~1=0; ~0=1;
即:對一個二進制數按位取反,即將0變1,1變0。
使一個數的最低位為零,可以表示為:a&~1。
~1的值為1111111111111110,再按「與」運算,最低位一定為0。因為「~」運算符的優先順序比算術運算符、關系運算符、邏輯運算符和其他運算符都高。
然後在附送你兩個為運算符的解釋:
左移運算符(<<)
將一個運算對象的各二進制位全部左移若干位(左邊的二進制位丟棄,右邊補0)。
例:a = a << 2 將a的二進制位左移2位,右補0,
左移1位後a = a * 2;
若左移時舍棄的高位不包含1,則每左移一位,相當於該數乘以2。
右移運算符(>>)
將一個數的各二進制位全部右移若干位,正數左補0,負數左補1,右邊丟棄。
操作數每右移一位,相當於該數除以2。
例如:a = a >> 2 將a的二進制位右移2位,
左補0 or 補1 得看被移數是正還是負。
如果還有什麼疑問,可以參考一下參考資料
希望我的回答對您有幫助,別忘了採納答案哦~
③ 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中一個&是什麼意思
一個&是按位與,是兩個數字進行的運算,兩個&也是與,但是是兩個boolean表達式進行與的操作
⑥ JAVA中&&和&、||和|的區別
「1、Java中&叫做按位與,&&叫做短路與,它們的區別是: &
既是位運算符又是邏輯運算符,&的兩側可以是int,也可以是boolean表達式,當&兩側是int時,要先把運算符兩側的數轉化為二進制數再進行運算,而短路與(&&)的兩側要求必須是布爾表達式。舉例如下:
12&5 的值是多少...」
⑦ java中的按位與是什麼意思
按位與是整數運算,整數以二進制形式,每一位進行與運輸,例如6與7的計算過程,6和7的二進制分別是110、111,進行與運輸要求兩個數都為1結果為,否則結果為0,110與111的結果為110,也就是6與7=6。
看明白了吧,我是不是太羅嗦了點~~~