JAVA/Android位运算符——左移(<<)、右移(>>)、与(&)、非(~)、或(|)、异或(^) .

本文详细介绍了计算机科学中的位运算,包括左移、右移、与、或、非和异或等基本位运算的操作方法及示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<<左移
将位数向左移动
如:十进制2左移8位变成512,二进制为10变成10 0000 0000
代码:
	<span style="white-space:pre">	</span>int data = 2 << 8;
	<span style="white-space:pre">	</span>System.out.println("左移后的数据为:" + data);



>>右移
将位数向右移动
如:十进制2048右移8位变成8,二进制为1000 0000 0000变成1000
代码:
		int data = 2048 >> 8;
		System.out.println("右移后的数据为:" + data);




&与运算
两个操作数中位都为1,结果才为1,否则结果为0
如:十进制240&60结果为48,二进制为1111 0000 & 11 1100 结果 11 0000
代码:
		int data = 240 & 60;
		System.out.println("与运算后的数据为:" + data);




|或运算
两个位只要有一个为1,那么结果就是1,否则就为0
如:252|60结果为252,二进制为1111 0000 | 11 1100 结果 1111 1100
代码:
		int data = 252 | 60;
		System.out.println("或运算后的数据为:" + data);




~非运算
如果位为0,结果是1,如果位为1,结果是0
详细过程如下:⑴1的补码为0000 0001按位求反后变为1111 1110因为此数为负数,将这个结果从补码变为原码:1、先求反,最高位(符号位)不变:1000 00012、再加1:1000 0010;结果即为-2


^异或运算符
两个操作数的位中,相同则结果为0,不同则结果为1。下面看一个简单的例子
如:15^2结果为13,二进制为1111 ^ 10 结果 1101 
		int data = 15 ^ 2;
		System.out.println("异或运算后的数据为:" + data);


### Java位运算符 &lt;&lt;、&gt;&gt; 和 &gt;&gt;&gt; 的区别 #### 1. 左移运算符(&lt;&lt;) 左移运算符 `&lt;&lt;` 将操作数的二进制表示向左移动指定的位数,右侧低位补零。左移不会改变符号位,因为左侧高位会被直接丢弃[^3]。 - **特点**:左移一位相当于将数值乘以2。 - **示例**: ```java int a = 9; // 二进制为 00001001 int result = a &lt;&lt; 2; // 左移两位,结果为 00100100,即十进制的36 ``` #### 2. 带符号右移运算符(&gt;&gt;) 带符号右移运算符 `&gt;&gt;` 将操作数的二进制表示向右移动指定的位数,左侧高位根据符号位填充。如果原始值为正数,则左侧填充0;如果为负数,则左侧填充1[^3]。 - **特点**:带符号右移一位相当于将数值除以2(整型除法)。 - **示例**: ```java int b = 9; // 二进制为 00001001 int c = -9; // 二进制为 11110111(补码表示) int result1 = b &gt;&gt; 1; // 右移一位,结果为 00000100,即十进制的4 int result2 = c &gt;&gt; 1; // 右移一位,结果为 11111011,即十进制的-5 ``` #### 3. 无符号右移运算符(&gt;&gt;&gt;) 无符号右移运算符 `&gt;&gt;&gt;` 将操作数的二进制表示向右移动指定的位数,无论原始值是正数还是负数,左侧高位始终填充0[^3]。 - **特点**:无符号右移可以将负数转换为正数,因为左侧始终填充0。 - **示例**: ```java int d = -9; // 二进制为 11110111(补码表示) int result = d &gt;&gt;&gt; 1; // 右移一位,结果为 01111011,即十进制的2147483647 ``` ### 总结 - **左移运算符 `&lt;&lt;`**:向左移动二进制位,右侧补零,不区分符号[^3]。 - **带符号右移运算符 `&gt;&gt;`**:向右移动二进制位,左侧根据符号位填充,保留符号[^3]。 - **无符号右移运算符 `&gt;&gt;&gt;`**:向右移动二进制位,左侧始终填充0,忽略符号[^3]。 ### 注意事项 在实际编程中,选择合适的位运算符取决于具体需求。例如,在处理负数时,`&gt;&gt;` 和 `&gt;&gt;&gt;` 的效果相同;但在处理负数时,`&gt;&gt;&gt;` 会改变数值的符号[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值