Java位运算符

/**
 * 位运算符:
 *      将两个【整型数字】,求出【补码】(参与运算的都是补码)。将补码中的每一位进行类似于逻辑运算的操作。1相当于true,0相当于false。
 *      &    |    ^    ~
 *      <<   >>   >>>
 *
 *      ^ : 位异或,如果一个数字和另外一个数字异或两次,一定得到自己
 */
public class E {
    public static void main(String[] args) {
        // 1. 定义两个整型变量
        int x = 10, y = -9;
        /*
        10: 0000 1010
        -9: 1111 0111补码
         */
        // 2. 位运算
        System.out.println(x & y);      // 0000 0010 => 2
        System.out.println(x | y);      // 1111 1111 => -1
        System.out.println(x ^ y);      // 1111 1101 -> -3
        System.out.println(~y);         // 0000 1000 -> 8

        // 3. 移位运算符(位移运算符)
        //    << : 将补码中的每一位,依次向左移动指定的位数
        //         在最后位补0,左侧溢出的位直接移除。
        //         每向左移动一位,都在最后补了一个零,每向左移动一位,相当于这个数字【乘2】
        //    >>: 将补码中的每一位,依次向右移动指定的位数
        //        在最左侧补【符号位】
        //        每向右移动一位,相当于这个数字【除以2】,但是这里遵循的向下取整(y轴坐标,取向下的)
        //    >>>: 将补码中的每一位,依次向右移动指定的位数
        //         【无符号】位右移,最高位补0
        System.out.println(10 << 2);    // 0010 1000 -> 40
        System.out.println(10 >> 2);    // 0000 0010 -> 2
        System.out.println(-9 >> 2);    // 1111 1101 -> 1000 0011 -> -3
        System.out.println(-9 >>> 2);   //                              1073741821
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值