首页 > 学院 > 开发设计 > 正文

位运算符总结

2019-11-08 18:24:40
字体:
来源:转载
供稿:网友

and运算 &

与运算: 相同位置的两个数都为1则为1,若有一个不为1,则为0.

00101 & 11100 –00100

int data = 100; System.out.PRintln("data-->" +Integer.toBinaryString(data)); System.out.println("64-->"+Integer.toBinaryString(64)); int s = data & 0x40; System.out.println("& result-->"+Integer.toBinaryString(s));

结果是: data–>1100100 64–>1000000 & result–>1000000

or运算 |

或运算: 相同位置有一个或多个1则为1,若都为0则为0

00101 | 11100 11101

xor运算 ^

异或运算: 相同位置上的值不相同则为1,相同则为0

00101 ^ 11100 11001

not运算 ~

取反运算: 把内存中的0和1全部取反 无符号:得到的值就是它与类型上界的差 实例 data—>1100100 64—->1000000 ~data—->11111111111111111111111110011011 ~data的十进制—–>-101

shl运算 <<

左移运算: a shl b 表示把a转换为二进制后左移b位(在后面添b个0) 例如 100的二进制表示为1100100,而110010000表示400,所以100 shl 2=400 所以 a shl b 实际上是a乘以2的b次方

shr运算 >>

右移运算: a shr b 表示a的二进制右移b位(去掉末尾b位),相当于a除以2的b次方(取整)

用shl 或 shr 要比直接用乘除运算块的多,因为后者是更接近底层的操作。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表