java位运算

进制转换

进制转换:https://jingyan.baidu.com/article/495ba84109665338b30ede98.html

二进制转十进制

在这里插入图片描述

二进制转8进制

在这里插入图片描述

二进制转16进制

在这里插入图片描述

十进制转二进制

方法为:十进制数除2取余法,即十进制数除2,余数为权位上的数,得到的商值继续除2,依此步骤继续向下运算直到商为0为止
在这里插入图片描述

8进制转二进制

在这里插入图片描述

16进制转二进制

在这里插入图片描述

十进制转8进制、16进制

在这里插入图片描述

8进制、16进制转十进制

在这里插入图片描述

移位运算符

注:以下num均为正整数

左移运算符 <<

num << n, 二进制左移n位,低位用0补齐

  1. num<<1相当于 num*2
# 3的二进制为0011
# 3<<1 = 6,6的二进制为0110
System.out.println(Integer.toBinaryString(3)); // 0011
System.out.println(Integer.toBinaryString(3<<1)+" -> "+(3<<1)); // 0110 -> 6

右移运算符 >>

num>>n,二进制右移n位,去掉低位n位

  1. num>>1,相当于num/2,整数为num/2,奇数为(num-1)/2
# 5的二进制为0101
# 5>>1 = 2,2的二进制为0010
System.out.println(Integer.toBinaryString(5)); // 0101
System.out.println(Integer.toBinaryString(5>>1)+" -> "+(5>>1)); // 0010 -> 2

无符号右移 >>>

无符号右移,忽略符号位,空位都以0补齐

  • 正数与右移动>>类似
  • 负数请查阅https://www.jb51.net/article/34133.htm**https://www.jb51.net/article/34133.htm

按位与、或、非,异或等运算方法

按位与运算符(&)

参加运算的两个数据,按照二进制位进行与运算。
运算规则:0&0=0,0&1=0,1&0=0,1&1=1
例如: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即可得到。

非运算符(~)

参加运算的一个数据,按二进制位进行“取反”运算。
运算规则:~1=0; ~0=1;
即:对一个二进制数按位取反,即将0变1,1变0。

  1. 使一个数的最低位为零,可以表示为:num&~1。
    ~1的值为1111111111111110,再按“与”运算,最低位一定为0

异或运算符(^)

0 ^ 1 = 1; 1 ^ 0 = 1; 1 ^ 1 = 0; 0 ^ 0 = 0;
即 :参加运算的两个对象只要有一个为1,其值为1。
例如:3|5 即 0000 0011 ^ 0000 0101 =0000 0110 因此,3^5的值得6;

  1. 交换两个值
int a = 3, b = 5;
a ^= b;
b ^= a;
a ^= b;
// 结果 a = 5, b = 3;
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值