位运算符小记

操作符描述例子
如果相对应位都是1,则结果为1,否则为0(A&B),得到12,即0000 1100
|如果相对应位都是 0,则结果为 0,否则为 1(A | B)得到61,即 0011 1101
^如果相对应位值相同,则结果为0,否则为1(A ^ B)得到49,即 0011 0001
按位取反运算符翻转操作数的每一位,即0变成1,1变成0。(〜A)得到-61,即1100 0011
<< 按位左移运算符。左操作数按位左移右操作数指定的位数。A << 2得到240,即 1111 0000
>> 按位右移运算符。左操作数按位右移右操作数指定的位数。A >> 2得到15即 1111
>>> 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。A>>>2得到15即0000 1111

 

package com.cjian.test;

/**
 * Created by CJ on 2020/8/11.
 */
public class Operator {
    //  &  与运算  如果相对应位都是1,则结果为1,否则为0          与
    //  |  或运算  如果相对应位都是0,则结果为0,否则为1          或
    //  ^  异或运算 如果相对应位相同,则结果为0,否则为1
    //  ~  按位取反运算符翻转操作数的每一位,即0变成1,1变成0     (取反)
    //  << 按位左移运算符,左操作数按位左移右操作数指定的位数
    //  >> 按位右移运算符,左操作数按位右移右操作数指定的位数
    //  >>>按位右移补零操作符,左操作数的值按右操作数指定的位数右移,移动得到的空位以0填充

    public static void main(String[] args) {
        int a = 60;     // 60 = 0011 1100
        int b = 13;     // 13 = 0000 1101
        int c = 0;

        c = a & b;      // 12 = 0000 1100 2的三次方+2的二次方
        System.out.println("a & b = " + c);

        c = a | b;      //0011 1101   32 + 16 + 8 + 4 + 1 = 61
        System.out.println("a|b = " + c);

        c = a ^ b;      //0011 0001  //2的5 + 2的4 +1 = 32 + 16 + 1 = 49
        System.out.println("a^b = " + c);

        c = ~a;         //1100 0011  -2的6二次方 + 3 = -61
        System.out.println("~a = " + c);

        c = a << 2;     //1111 0000 128 + 64 + 32 + 16 = 240
        System.out.println("a << 2 = " + c);

        c = a >> 2;     //0000 1111    8+4+2+1 = 15
        System.out.println("a >> 2 = " + c);

        c = a >>> 2;    //0000 1111    8+4+2+1 = 15
        System.out.println("a >>> 2 = " + c);

    }
}

输出结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值