首先说明:
测试用int数据类型测试,在Java中int有32位,Integer包装类有一个toBinaryString();可以将十进制转换成二进制表达,返回的是String类型的对象。
1.定义a,b两个int类型数量,数量赋值为10和-10
public class WeiYunSuan {
public static void main(String[] args){
int a=10;
int b=-10;
//将十进制转换成二进制
String strA=Integer.toBinaryString(a);
String strB=Integer.toBinaryString(b);
System.out.println("a的二进制:"+strA);
System.out.println("b的二进制:"+strB);
}
}
控制台输出:
正数a二进制前面是0,控制台就不补位数了。实际就是(0000 0000 0000 1010);下面相同。
2.&运算:只有当相应位上的数都是1时,该位才取1,否则该为为0。
控制台输出:
这里的10是二进制,不是十进制。
3.|运算:只要相应位上存在1,那么该位就取1,均不为1,即为0。
控制台输出:
4.^运算:只有当相应位上的数字不相同时,该为才取1,若相同,即为0。
控制台输出:
5.~运算:进行取反运算。每个位上都取相反值,1变成0,0变成1。
控制台输出:
6.<<运算:进行左移运算,用来将一个数各二进制位全部向左移动若干位。测试左移2位
控制台输出:
7.>>运算:进行左移运算,用来将一个数各二进制位全部向左移动若干位。测试右移2位
控制台输出:
8.>>>运算:表示不带符号向右移动二进制数,移动后前面统统补0;
控制台输出:
整个代码:
public class WeiYunSuan {
public static void main(String[] args){
int a=10;
int b=-10;
//将十进制转换成二进制
String strA=Integer.toBinaryString(a);
String strB=Integer.toBinaryString(b);
System.out.println("a的二进制:"+strA);
System.out.println("b的二进制:"+strB);
System.out.println("---------------------------------------------------------");
System.out.println("&运算:只有当相应位上的数都是1时,该位才取1,否则该为为0。");
System.out.println("&运算结果是"+(a&b));
System.out.println("&运算的二进制是:"+Integer.toBinaryString(a&b));
System.out.println("---------------------------------------------------------");
System.out.println("|运算:只要相应位上存在1,那么该位就取1,均不为1,即为0。");
System.out.println("|运算结果是"+(a|b));
System.out.println("|运算的二进制是:"+Integer.toBinaryString(a|b));
System.out.println("---------------------------------------------------------");
System.out.println("^运算:只有当相应位上的数字不相同时,该为才取1,若相同,即为0。");
System.out.println("^运算结果是"+(a^b));
System.out.println("^运算的二进制是:"+Integer.toBinaryString(a^b));
System.out.println("---------------------------------------------------------");
System.out.println("~运算:进行取反运算。每个位上都取相反值,1变成0,0变成1。");
System.out.println("~运算结果是"+(~a));
System.out.println("~运算的二进制是:"+Integer.toBinaryString(~a));
System.out.println("---------------------------------------------------------");
System.out.println("<<运算:进行左移运算,用来将一个数各二进制位全部向左移动若干位。测试左移2位");
System.out.println("<<运算结果是"+(a<<2));
System.out.println("<<运算的二进制是:"+Integer.toBinaryString(a<<2));
System.out.println("---------------------------------------------------------");
System.out.println(">>运算:进行左移运算,用来将一个数各二进制位全部向左移动若干位。测试右移2位");
System.out.println(">>运算结果是"+(b>>2));
System.out.println(">>运算的二进制是:"+Integer.toBinaryString(b>>2));
System.out.println("---------------------------------------------------------");
System.out.println(">>>运算:表示不带符号向右移动二进制数,移动后前面统统补0;");
System.out.println(">>>运算结果是"+(b>>>2));
System.out.println(">>>运算的二进制是:"+Integer.toBinaryString(b>>>2));
}
}
** 没有<<<位运算,不管是正数还是负数,左移都用0补。**