zoukankan      html  css  js  c++  java
  • Java_按位与&,按位或,取反,左移,右移运算符

    //按位与运算&
    System.out.println(0&0);//0
    System.out.println(0&1);//0
    System.out.println(1&1);//1
    System.out.println("===========");
    //按位或运算符|
    System.out.println(0|0);//0
    System.out.println(0|1);//1
    System.out.println(1|1);//1
    System.out.println("===========");
    //异或运算符^
    System.out.println(0^0);//0
    System.out.println(0^1);//1
    System.out.println(1^1);//0
    System.out.println("===========");
    //取反运算符~
    //部分要点:
    //什么是取反:取反就是0=>1 1=>0
    //什么是补码:正数的补码是其反码,负数的补码为其反码+1,例5的二进制为0 0101,而0 0101的补码是1 1010,-5的二进制是1 0101,而1 0101的补码是1 1011 
    //什么是原码:规定正数的补码与原码相同,负数的原码是其反码+1
    //---------------------------------------------------------
    //6为正数,二进制为 0 0110 (第一个0代表正负)
    //然后计算补码,即1 1001
    //求原码,对后4位进行按位取反,即 1 0110
    //然后对二进制进行补码+1操作,即 1 0111
    //1010转成十进制为7,加上前面的负号,得-7
    //如6为正数,其二进制为110,取反后为001,补码右边+1为1010,原来6为正,取反为负,得-2
    //----------------------------------------------------------
    System.out.println(~6);//-7
    System.out.println(~42);//-43
    System.out.println("===========");
    //左移运算符<<(即向左移动,右边补0)
    //如2的二进制为10,若2<<2,则1000,也就是十进制8,同理若2<<3,则10000,也就是十进制16,根据规律可以看出n<<m=n*(2^m)
    System.out.println(15<<2);//60: 15*(2^2)
    //右移有符号运算符>>(即向右移动,但左边补0还是1需要看原来的数是正的还是负的)
    System.out.println(2>>2); //0(右边移除的数将被丢弃)
    System.out.println(-8>>3); //-1
    
  • 相关阅读:
    LeetCode 79. 单词搜索
    LeetCode 1143. 最长公共子序列
    LeetCode 55. 跳跃游戏
    LeetCode 48. 旋转图像
    LeetCode 93. 复原 IP 地址
    LeetCode 456. 132模式
    LeetCode 341. 扁平化嵌套列表迭代器
    LeetCode 73. 矩阵置零
    LeetCode 47. 全排列 II
    LeetCode 46. 全排列
  • 原文地址:https://www.cnblogs.com/eRrsr/p/6401881.html
Copyright © 2011-2022 走看看