二进制是计算机技术中的一种进制,使用0和1来表示数据,进位的规则是逢二进一,二进制的运算有<<(左移)、>>(右移)、>>>(无符号右移)、与(&)、非(~)、或(|)、异或(^)。

首先说说移位

一、<<(左移)

  1. private static void a() {

  2. String binaryStr = "11010111";

  3. short binary = Short.valueOf(binaryStr,2);

  4. short left = (short) (binary << 1);

  5. String leftBinResult = Integer.toBinaryString(left);

  6. System.out.println(leftBinResult);//110101110 低位补0

  7. }

二、>>(右移)

  1. private static void b() {

  2. String binaryStr = "11010111";

  3. Short binary = Short.valueOf(binaryStr,2);

  4. short left = (short) (binary >> 1);

  5. String leftBinResult = Integer.toBinaryString(left);

  6. System.out.println(leftBinResult);//01101011 高位补0

  7. }

三、>>>(无符号右移)

  1. private static void c() {

  2. String binaryStr = "1010101011010111";

  3. Integer binary = Integer.valueOf(binaryStr,2);

  4. short left = (short) (binary >>> 1);

  5. String leftBinResult = Integer.toBinaryString(left);

  6. System.out.println(leftBinResult);//101010101101011

  7. }

通过以上代码可以看出移位是怎么移的,接下来看看与(&)、非(~)、或(|)、异或(^)。

  • private static void d() {

  • String a = "33";

  • String b = "44";

  • Short sa = Short.valueOf(a, 10);

  • Short sb = Short.valueOf(b,10);

  • String aStr = Integer.toBinaryString(sa);

  • String bStr = Integer.toBinaryString(sb);

  • System.out.println(aStr);// 100001

  • System.out.println(bStr);// 101100

  • short result = (short) (sa & sb);

  • System.out.println("&运算结果:" Integer.toBinaryString(result));// 100000

  • }

  • &与运算同1为1,不同为0

    五、或(|)

    1. private static void e() {

    2. String a = "33";

    3. String b = "44";

    4. Short sa = Short.valueOf(a, 10);

    5. Short sb = Short.valueOf(b,10);

    6. String aStr = Integer.toBinaryString(sa);

    7. String bStr = Integer.toBinaryString(sb);

    8. System.out.println(aStr);// 100001

    9. System.out.println(bStr);// 101100

    10. short result = (short) (sa | sb);

    11. System.out.println("| 运算结果:" Integer.toBinaryString(result));// 101101

    12. }

    | 或运算,只要有一个数为1就是1,否则为0

    六、非(~)

    1. private static void f() {

    2. byte i = -1;// 1111 1111

    3. // i << 3 1111 1000

    4. byte a = (byte)~(i << 3);

    5. String result = Integer.toBinaryString(a);

    6. System.out.println(result);// 0000 0111

    7. }

    ~ 非运算,1则0,0则1

    七、异或(^)

    1. private static void g() {

    2. String a = "33";

    3. String b = "44";

    4. Short sa = Short.valueOf(a, 10);

    5. Short sb = Short.valueOf(b,10);

    6. String aStr = Integer.toBinaryString(sa);

    7. String bStr = Integer.toBinaryString(sb);

    8. System.out.println(aStr);// 100001

    9. System.out.println(bStr);// 101100

    10. short result = (short) (sa ^ sb);

    11. System.out.println("^运算结果:" Integer.toBinaryString(result));// 001101

    12. }

    ^或运算,相同为0,不同为1。

    最后感谢各位看官观看本篇文章,如果觉得文章还行的话可以点点关注,我会经常分享,我们共同进步。

    二进制运算(二进制运算)(1)

    二进制

    ,