二进制是计算机技术中的一种进制,使用0和1来表示数据,进位的规则是逢二进一,二进制的运算有<<(左移)、>>(右移)、>>>(无符号右移)、与(&)、非(~)、或(|)、异或(^)。
首先说说移位
一、<<(左移)
private static void a() {
String binaryStr = "11010111";
short binary = Short.valueOf(binaryStr,2);
short left = (short) (binary << 1);
String leftBinResult = Integer.toBinaryString(left);
System.out.println(leftBinResult);//110101110 低位补0
}
二、>>(右移)
private static void b() {
String binaryStr = "11010111";
Short binary = Short.valueOf(binaryStr,2);
short left = (short) (binary >> 1);
String leftBinResult = Integer.toBinaryString(left);
System.out.println(leftBinResult);//01101011 高位补0
}
三、>>>(无符号右移)
private static void c() {
String binaryStr = "1010101011010111";
Integer binary = Integer.valueOf(binaryStr,2);
short left = (short) (binary >>> 1);
String leftBinResult = Integer.toBinaryString(left);
System.out.println(leftBinResult);//101010101101011
}
通过以上代码可以看出移位是怎么移的,接下来看看与(&)、非(~)、或(|)、异或(^)。
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
五、或(|)
private static void e() {
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));// 101101
}
| 或运算,只要有一个数为1就是1,否则为0
六、非(~)
private static void f() {
byte i = -1;// 1111 1111
// i << 3 1111 1000
byte a = (byte)~(i << 3);
String result = Integer.toBinaryString(a);
System.out.println(result);// 0000 0111
}
~ 非运算,1则0,0则1
七、异或(^)
private static void g() {
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));// 001101
}
^或运算,相同为0,不同为1。
最后感谢各位看官观看本篇文章,如果觉得文章还行的话可以点点关注,我会经常分享,我们共同进步。
二进制
,