Java中的位运算符

&按位与
|按位或
~按位取反
^按位异或

>>>>>>表示带符号右移,如果该数为正,则高位补0,若为负数,则高位补1;
>>>>>>>>>表示无符号右移,也叫逻辑右移,即若该数为正,则高位补0,而若该数为负数,则右移后高位同样补0。

x>>n表示x向右移2)
例子:

  • 5>>2
    表示5向右移2位.
    5的二进制表示为:00000000 00000000 00000000 00000101
    向右移2位,由于考虑到是正数,左边空出来的位用0补变为00000000 00000000 00000000 0000 0001
    结果为1
  • -5>>2
    -5的二进制为11111111 11111111 11111111 11111011
    向右移2位,由于考虑到是负数,左边空出来的位用1补变为11111111 11111111 11111111 11111110
    负数还原成10进制:保留符号位取反加1
    • 取反:10000000 00000000 00000000 00000001
    • 加1: 10000000 00000000 00000000 00000010
      结果为:-2
  • 5>>>2
    【同5>>2】
  • -5>>>2
    左边空出来的位用0补变为00111111 11111111 11111111 11111110
    结果就是这个二进制所代表的的值,即8455454206
Java编程语言中,位运算符是构建程序逻辑的重要工具,用于对二进制位进行操作,对于编写高效、精确的代码至关重要,在Java语言中,提供了7种位运算符,分别是按位与(&)、按位或(|)、按位异或(^)、取反(~)、左移(<<)、右移(>>)和无符号右移(>>>)。其中,仅有~是单目运算符,其他运算符均为双目运算符。位运算符是对long、int、short、byte和char这5种类型的数据进行运算的,不能对double、float和boolean进行位运算操作。除“按位与”和“按位或”运算符外,其他位运算符只能用于处理整数的操作数,包括byte、short、char、int和long等数据类型。整型数据在内存中以二进制的形式表示,如int型变量7的二进制表示是00000000 00000000 00000000 00000111 [^1][^2][^3]。 以下是这些位运算符的简单示例代码: ```java public class BitwiseOperatorsExample { public static void main(String[] args) { int a = 5; // 二进制: 0101 int b = 3; // 二进制: 0011 // 按位与 int andResult = a & b; // 二进制: 0001,十进制: 1 System.out.println("按位与结果: " + andResult); // 按位或 int orResult = a | b; // 二进制: 0111,十进制: 7 System.out.println("按位或结果: " + orResult); // 按位异或 int xorResult = a ^ b; // 二进制: 0110,十进制: 6 System.out.println("按位异或结果: " + xorResult); // 取反 int notResult = ~a; // 二进制: 11111111 11111111 11111111 11111010,十进制: -6 System.out.println("取反结果: " + notResult); // 左移 int leftShiftResult = a << 2; // 二进制: 010100,十进制: 20 System.out.println("左移结果: " + leftShiftResult); // 右移 int rightShiftResult = a >> 1; // 二进制: 0010,十进制: 2 System.out.println("右移结果: " + rightShiftResult); // 无符号右移 int unsignedRightShiftResult = a >>> 1; // 二进制: 0010,十进制: 2 System.out.println("无符号右移结果: " + unsignedRightShiftResult); } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值