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 的值是多少...”