• Java中的按位运算


    一、位运算符简介:

     1.按位与&。如果两个整形数据 a、b 对应位都是1,则结果位才为1,否则为0,(int 最大值0x7fffffff ):

    1 int a = 0x7fffffff;
    2 int b = 12;
    3 int c = 0;
    4 int aAndB = a&b; // aAndB is 12
    5 int aAndC = a&c; // aAndC is 0

    2.按位或|。如果两个操作数都是0,则结果为0,否则为1:

     

    1 int a = 0x7fffffff;
    2 int b = 12;
    3 int c = 0;
    4 int aOrB = a|b; //  aOrB is 2147483647
    5 int aOrC = a|c;  // aOrC is 2147483647

    3.按位取反~。当操作数的二进制表示相同时,1位为0,0位为1:

     

    1 int a = 0x7fffffff;
    2 int b = 12;
    3 int c = 0;
    4 a = ~a;  // result is -2147483648
    5 b = ~b; // result is -13;
    6 c = ~c;  // result is -1;

    4.按位异或^。当两个操作位二进制表示相同时结果为0,否则为1:

    1 int a = 0x7fffffff;
    2 int b = 12;
    3 int c = 0;
    4 c ^= a; // c is 2147483647
    5 b ^= 8; // b is 4
    6 a ^= a; // a is 0

    5.左移<<。左移右边操作数指定的位数,左边移动的部分补0:

     

    1 int a = 0x7fffffff;
    2 int c = 3;
    3 c <<= 1; // c is 6
    4 a <<= 1; // a is -2

    6.右移>>。跟左移不同,如果最高位为0,则右移补0。如果最高位为1,则右移补1:

     

     1 int a = 0x7fffffff;
     2 int a = 0x7fffffff;
     3 int b = 0;
     4 int c = 3;
     5 int d = -2;
     6 int e = -1;
     7 c >>= 1; // c is 1
     8 a >>= 1; // a is 1073741823
     9 b >>= 1; // b is 0
    10 d >>= 1; // d is -1
    11 e >>=1; // d is -1

    7.无符号右移>>>。无论最高位是0还是1,左侧被移空的高位都填入0。

    二、利用按位运算符,在很多情况下,可以进行方便的计算。

     将大写字母变为小写,将小写字母变为大写( charArray[i]^= 32, 因为在ASCII码中,大写字母与小写字母差了32,因此使用异或运算符,通过与 0 相异或,原字符的二进制形式在其他位保留原有的值,在第 6 位相异或,如果原有位为 0 则变为 1, 原有位为 1 则变为 0):

     

    1 String tempString = "1a2b3E5F6P7p";
    2 char [] charArray = tempString.toCharArray();
    3 for(int i = 0; i < charArray.length; i++)
    4   if(Character.isLetter(charArray[i])) charArray[i] ^= 32;
    5 System.out.println(String.valueOf(charArray)); // result is 1A2B3e5f6p7P
    谢谢!
  • 相关阅读:
    MySQL用户管理
    MySQL函数
    MySQL数据类型
    MySQL配置
    PowerDesigner之PDM检查
    PowerDesigner之PDM(物理概念模型)
    .NET Reflector反编译的方法
    IBatis.net 输出SQL语句(七)
    SVN 记录冲突、忽略
    SQLServer 窗口函数
  • 原文地址:https://www.cnblogs.com/ylxn/p/10353889.html
Copyright © 2020-2023  润新知