位运算符

位运算符 (二进制计算)
  & 与 转换二进制后,两个位数都为1结果才是1 例:10000001,10000000 结果为10000000
  | 或 转换二进制后,两个位数只要一个为1结果就是1 例:10000001,10000000 结果为10000001
  ~ 非 转换二进制后,如果位为0,结果是1,如果位为1,结果是0 例:2 结果为-3
  ^ 异或 两个操作数的位中,相同则结果为0,不同则结果为1 例:a 的值是15,转换成二进制为1111,而b 的值是2,转换成二进制为0010,根据异或的运算规律,可以得出其结果为1101 即13。
  << num << 1,相当于num乘以2 低位补0
  >> num >> 1,相当于num除以2 高位补0 
  >>> 忽略符号位,空位都以0补齐


-----   n=10; m=~n;
        变量n的二进制数形式:        00000000 00000000 00000000 00001010

 

public class BinaryTest {
    public static void main(String[] args) {
        int a = 129, b = 128;
        System.out.println("与运算符 结果:"+(a&b)); // 转换二进制后,两个位数都为1结果才是1 例:10000001,10000000 结果为10000000
        System.out.println("或运算符 结果:"+(a|b)); // 转换二进制后,两个位数只要一个为1结果就是1 例:10000001,10000000 结果为10000001
        System.out.println("非运算符 结果:"+(~a)); // 转换二进制后,如果位为0,结果是1,如果位为1,结果是0 例:10000001 结果为01111110
        System.out.println("二进制转十进制 : "+ toBinary(a));
        System.out.println("十进制转二进制 : "+ (Integer.parseInt("10000001",2))); // radix 进制
    }
    static String toBinary(int num){
        String str = "";
        while(num!=0){
            str = num%2+str;
            num = num/2;
        }
        return str;
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值