java按位或
Ⅰ java 按位運算
你的這個設計有問題。
位運算來進行邏輯判斷,其實就是用數字的二進制各位來做標志。通過位運算,進行許可權的組合和拆分。
這樣有個基礎:就是每個許可權的值正好要是二進制位的對應值。
許可權可以取的數就是二進制的進度值。如:1,2,4,8,16,32……(不超過數字表達范圍)。
看你的題目: 3是發帖,4是刪帖。要用二進制來做掩碼計算。設計不科學。
兩個方法:
1 建議使用1,2,4,8……來定義的你的許可權。
如果改成:4是發帖,8是刪帖
long power=4|8;
判斷是否有發帖許可權:power&4 >0
2 如果一定要用1,2,3,4來定義,那麼要做進制操作。
long power=(1<<(3-1))|(1<<(4-1));
判斷是否有發帖許可權:(power&(1<<(3-1))) > 0
註:如果上面都不減去1,也行,就浪費一個位置。
Ⅱ JAVA里或的符號是什麼
||
例如:
if(a == 1 || b == 2)
表示a的值為1或者b的值為2都成立
Ⅲ Java中「按位或」和「按位與」怎麼計算啊以4|5、4&5為例你給我講講可以嗎謝謝了!
將十進制數字轉化成二進制,再分別按位與(或)
與:1 1相與為1 、 0與任何數字相與為0
或:1 1相或為1 、1與任何數字相或為1
Ⅳ java中的「&」、「|」、「^」、「~」運算符怎麼用
|是按位或
^是按位抑或
&是按位與
比如有兩個數
int x = 5;
int y = 11;
System.out.println(x|y);
System.out.println(x&y);
System.out.println(x^y);
結果是15, 1 ,14
過程
x=5 (0101二進制)
y=11(1011二進制)
x|y = 1111 = 15
x&y = 0001 = 1
x^y = 1110 =14
這些操作一般用到的不多,只有在需要對數字的位進行操作的時候才用到。
Ⅳ java中按位異或與邏輯異或的區別
邏輯沒有異或運算。
位異或指:異或運算^,異或運算它都是以二進制數據為基礎進行運算,1^1=00^0=11^0=10^1=1
Ⅵ JAVA中按位異或是什麼意思 不太理解,請指教,謝謝!
異或運算沒有聽過,不過位與運算就有,它的原理是:先把十進制(或N進制)轉換成二進制,再分別同位進行與運算,比如:
12&5(java中位與運算是用&符號表示的)
即:12
=
11000
&
5
=
01001
--------------------
=
11001
位異或運算或許是把它們進行異或吧。
PS樓下不能這么說,有些演算法還得用到這些位操作,用得妙的還真叫人拍案叫絕
Ⅶ 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、Java中&叫做按位與,&&叫做短路與,它們的區別是: &
既是位運算符又是邏輯運算符,&的兩側可以是int,也可以是boolean表達式,當&兩側是int時,要先把運算符兩側的數轉化為二進制數再進行運算,而短路與(&&)的兩側要求必須是布爾表達式。舉例如下:
12&5 的值是多少...」