当前位置:首页 » 编程语言 » java按位或

java按位或

发布时间: 2022-09-22 03:40:33

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

热点内容
hbasejavaapi 发布:2025-01-11 01:11:09 浏览:744
我的世界pe版饥饿服务器 发布:2025-01-11 01:09:39 浏览:485
异构数据库数据同步 发布:2025-01-11 01:09:04 浏览:957
c语言三角波 发布:2025-01-11 01:02:11 浏览:78
php正则转义 发布:2025-01-11 01:00:03 浏览:691
手拉的箱包上的密码锁一般是多少 发布:2025-01-11 00:59:55 浏览:8
oppo手机系统更新密码是多少 发布:2025-01-11 00:56:55 浏览:87
群辉存储服务器 发布:2025-01-11 00:50:19 浏览:429
如何用js脚本 发布:2025-01-11 00:47:32 浏览:888
日志和数据库 发布:2025-01-11 00:47:24 浏览:127