Java中“按位或”和“按位与”怎么计算啊?以4|5、4&5为例你给我讲讲可以吗?谢谢了!

作者&投稿:淡炎 (若有异议请与网页底部的电邮联系)
C语言中按位或,与,非是怎么用的,怎么运算?~

位运算符
C提供了六种位运算运算符;这些运算符可能只允许整型操作数,即char、short、int和long,无论signed或者unsigned。
&
按位AND
|
按位OR
^
按位异或
<<
左移
>>
右移
~
求反(一元运算)
按位与操作&通常用于掩去某些位,比如
n
=
n
&
0177;
使得n中除了低7位的各位为0。
按位或操作|用于打开某些位:
x
=
x
|
SET_ON;
使得x的某些SET_ON与相对的位变为1。
按位异或操作^使得当两个操作数的某位不一样时置该位为1,相同时置0。
应该区分位操作符&、|与逻辑操作符&&、||,后者从左到右的评价一个真值。比如,如果x为1、y为2,那么x
&
y为0,而x
&&
y为1。
移位运算符>将左侧的操作数左移或者右移右操作数给定的数目,右操作数必须非负。因此x
<<
2将x的值向左移动两位,用0填充空位;这相当于乘4。右移一个无符号数会用0进行填充。右移一个带符号数在某些机器上会用符号位进行填充(“算数移位”)而在其他机器上会用0进行填充(“逻辑移位”)。
单目运算符~对一个整数求反;即将每一个1的位变为0,或者相反。比如
x
=
x
&
~077
将x的后六位置0。注意x
&
~077的值取决于字长,因此比如如果假设x是16位数那么就是x
&
0177700。这种简易型式并不会造成额外开销,因为~077是一个常数表达式,可以在编译阶段被计算。
作为一个使用位操作的实例,考虑函数getbits(x,p,n)。它返回以p位置开始的n位x值。我们假设0位在最右边,n和p是正数。例如,getbits(x,4,3)返回右面的4、3、2位。
/*
getbits:
返回从位置p开始的n位
*/
unsigned
getbits(unsigned
x,
int
p,
int
n)
{
return
(x
>>
(p+1-n))
&
~(~0
<<
n);
}
表达式x
>>
(p+1-n)将需要的域移动到字的右侧。~0是全1;将其左移n为并在最右侧填入0;用~使得最右侧n个1成为掩码。

其实他们之间有一个很大的差别:短路
举个例子来解释一下吧,
false&true-->false
false&&true-->false
单从结果上看,他们结果是一样的,都是false
但是前者在运行的时候,计算机首先判断第一个条件为false,然后判断第二个条件true,然后判断出结果为false
而后者,首先也是判断第一个条件,当判断出为false时,程序立即终止,因为不管第二个条件是什么,结果一定为false
这就是他们之间的区别

希望我的回答能对你有所帮助

将十进制数字转化成二进制,再分别按位与(或)
与:1 1相与为1 、 0与任何数字相与为0
或:1 1相或为1 、1与任何数字相或为1


磴口县15624055257: Java中“按位或”和“按位与”怎么计算啊?以4|5、4&5为例你给我讲讲可以吗?谢谢了! -
爱新觉罗胖爽舒: 将十进制数字转化成二进制,再分别按位与(或) 与:1 1相与为1 、 0与任何数字相与为0 或:1 1相或为1 、1与任何数字相或为1

磴口县15624055257: java中的按位运算符 -
爱新觉罗胖爽舒: 与 0&&0 =0 1&&0 =0 0&&1 =0 1&&1 =1 或 0||0 =0 1||0 =1 0||1 =1 1||1 =1 异或是 1^0=1 0^1=1 0^0=0 1^1=0例子 11001010 与 00011011 按位与 按位或 按位异或00001010 11011011 11010001

磴口县15624055257: JAVA位运算符 -
爱新觉罗胖爽舒: 运算符 含义 示例 ~ 按位非(NOT) b = ~a & 按位与(AND) c = a & b | 按位或(OR) c = a | b ^ 按位异或(XOR) c = a ^ b >> 右移 b = a >> 2 >>> 右移,左边空出的位以0填充 b = a >>> 2 << 左移 b = a << 1 当然同样有 &=,|=,^=,>>=,>>>...

磴口县15624055257: java中&与&&的区别 -
爱新觉罗胖爽舒: java中&叫做按位与,&&叫做短路与,它们的区别是: & 既是位运算符又是逻辑运算符,&的两侧可以是int,也可以是boolean表达式,当&两侧是int时,要先把运算符两侧的数转化为二进制数再进行运算,而短路与(&&)的两侧要求必须是布...

磴口县15624055257: JAVA中四个二进制位从操作符即(&按位与、|按位货、^按位异或、~按位取反) -
爱新觉罗胖爽舒: 首先回答你问的问题: 按位与运算符(&) 参加运算的两个数据,按二进制位进行“与”运算.运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1; 即:两位同时为“1”,结果才为“1”,否则为0例如:3&5 即 0000 0011 & 0000 0101 = 0000 ...

磴口县15624055257: java 中 +=,=+ 运算符 用法 -
爱新觉罗胖爽舒: 位运算符 位运算是以二进制位为单位进行的运算,其操作数和运算结果都是整型值. 位运算符共有7个,分别是:位与(&)、位或(|)、位非(~)、位异或(^)、右移(>>)、左移(<<)、0填充的右移(>>>). 位运算的位与(&)、位...

磴口县15624055257: 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 这些操作一般用到的不多,只有在需要对数字的位进行操作的时候才用到.

磴口县15624055257: JAVA按位与是什么意思? -
爱新觉罗胖爽舒: 异或运算,不过位与运算就有,它的原理是:先把十进制(或N进制)转换成二进制,再分别同位进行与运算,比如: 12&5(java中位与运算是用&符号表示的) 即:12 = 11000 & 5 = 01001 -------------------- = 11001 位异或运算或许是把它们进行异或吧.

磴口县15624055257: java中| 和||的区别? -
爱新觉罗胖爽舒: | 按位或运算符 ||判断或者

磴口县15624055257: java中的“~”这个符号是表示什么意思啊? -
爱新觉罗胖爽舒: ~是按位取反(0变1,1变0)的意思,按位取反是针对二进制的,比如2的二进制表示为010,那么~2就是101 每位可以代表一个含义,针对你的问题.我们可以定义SelectionKey.OP_READ为100,表示读权限 我们可以定义SelectionKey.OP_WRITE为010,表示写权限 我们可以定义SelectionKey.OP_EXECUTE为001,表示可执行权限 则111就表示拥有所有的读、写、可执行权限 而~SelectionKey.OP_WRITE就是~010 == 101,就是除写之外的所有权限(即可读,可执行)

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网