网上现有的所有【位运算】大总结,看你知道几个

位运算


  

单独使用

包括:与,或,异或,按位取反,左移,算数右移,逻辑右移
  JAVA 十进制转二进制:String.valueOf( Integer.toBinaryString(int n) );
  二进制 0b 开头 0b0010 == 2;八进制 0 开头 0010 == 8, 十六进制 0x 开头 0x0010 == 16
注意:优先级问题:
() > ~, - > /, *, % > -, + > <<, >> >>> > & > ^ > | > = , +=, -=, *=

在这里插入图片描述

总结个例

与 &

a . a . a.任何位上的数与 0 都为 0 :1 & 0 = 0

b . b . b. 奇数偶数:奇数 1 == n & 1;偶数 0 == n & 1

c . c . c. 对数 x 模 2 的 n n n 次方 所得到的数:x%(2<<n) == x & ((2 << n) - 1)

例如下面的例子:
  10 % 4 =10 & 3=> 101 0 2 1010_2 10102 & 001 1 2 0011_2 00112 = 001 0 2 0010_2 00102 = 2

d . d . d. 返回 n 的二进制位 中 最后一位 1 1 1 的所代表的数:lowbit(n) = n & -n
应用:判断一个正数是不是2的幂(方法1): lowbit(n) == n

例如下面的例子:
01001 0 2 010010_2 0100102   = ~n =>   10110 1 2 101101_2 1011012   = -n=~n+1 =>   10111 0 2 101110_2 1011102 (得到 其 相反数)
      = n & -n =>   010010 010010 010010 & 10111 0 2 101110_2 1011102 = 00001 0 2 000010_2 0000102 = 2 2 2<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值