java中的位操作

package csdn;

public class BitMap {
    /**
     * java中位运算符
     * 重点  通过 补码运算
     * 正数 原码 反码 补码 都一样
     * 负数  原码  反码在原码除了符号位,其他位取反   补码在反码上加一
     *  | &  ^ ` 
     * >>  <<    右移 和 左移    右移高位补1
     * >>>   无符号右移   高位补0
     */
    public static void main(String[] args) {
        int n=40;
       int n2= (n & 0b1000)/0b1000;
       System.out.println("n2= "+n2);
       int n3=1<<3;
       System.out.println("n3= "+n3);
       int n4=(n | (1<<2));
       System.out.println("n4= "+n4);
        int n5=n>>>4;
        System.out.println("n5= "+n5);
        //超过数值范围好像都是-1
        // -2  0b10   -5  0b101
        int n6=-2>>3;
        System.out.println("n6= "+n6);
        int n7=-5>>2;
         //  原码         1000 0000 0000 0000 0000 0000 0000 0101
         //  反码         1111 1111 1111 1111 1111 1111 1111 1010
         //  补码         1111 1111 1111 1111 1111 1111 1111 1011
//右移2位后的补码          0011 1111 1111 1111 1111 1111 1111 1110
// >> 负数右移后高位补1    1111 1111 1111 1111 1111 1111 1111 1110
//      反码              1111 1111 1111 1111 1111 1111 1111 1101
//      原码              1000 0000 0000 0000 0000 0000 0000 0010   
//   正好是-2
        System.out.println( "n7="+n7);
        // 
        int n8=5>>2;
        System.out.println("n8="+n8);
       int n9=-4 | 0b10;
       System.out.println("n9="+n9);
       int n10=0b10000;
       System.out.println("n10="+n10);
       // 这是补码
       int n11=0b10000000000000000000000000000001;
       System.out.println("n11="+n11);
       // 我们赋值的就是补码
       int n12=0b10000000000000000000000000000010;
       System.out.println("n12="+n12);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值