double i = Integer.MIN_VALUE - 1;
System.out.println(i);
System.out.println(0b111);//二进制Binary
System.out.println(0x111);//16进制 Hex
System.out.println(01234); //八进制 Octal
System.out.println(100);//Decimal
//注意位运算时 负数要转换为补码形式
// Integer a = null;
// Integer b = 10-2>10 ? a : (Integer) 12;
// Integer b1 = 10-2>10 ? a : 12; //npe
// System.out.println(b);
// System.out.println(0b10000000000000000000000000000000);
System.out.println(Integer.toBinaryString(-1));
//^ 两个二进制每一位一样 0,不一样1 |只要一个为1 就为1
// ~单目取反
System.out.println(~3);
System.out.println((4^3^4)==3); //可用来加密
System.out.println("-------------------------------------------");
int a=100;
int b=200;
a=a^b;
b=a^b; //b=a^b^b == a
a=a^b; //a=a^b^a==a^a^b
System.out.println(a);
System.out.println(b);
System.out.println("-------------------------------");
System.out.println(8>>>2);//2
System.out.println(-8>>>2); //其实是对补码移位,所以全部用0补全补码此时就是正数了 正数的话补码等于原码,此时是个一个很大的数 不支持<<<
System.out.println(-32>>2); //针对补码位移,移位右移位如是正数,高位全部补0,负数全部补1 (因为是对补码操作,所以看起来很怪,对原码的话就很好理解了)
System.out.println(Integer.toBinaryString(Integer.MAX_VALUE).length());//不显示符号位
System.out.println(Integer.MIN_VALUE);
System.out.println(Integer.toBinaryString(Integer.MIN_VALUE)); //显示符号位
System.out.println(0x80000000);
maxValue = Integer.MAX_VALUE;
double value = (double) Integer.MAX_VALUE;
System.out.println("Integer.MAX_VALUE = " + Integer.MAX_VALUE);
System.out.println(Integer.toBinaryString(-7));//补码
System.out.println(0x02<<2);
System.out.println(0x02);
//string 的骚操作
String s = "hello, ";
System.out.println(s.trim().substring(0, s.length() - 1));//hello,
s = s.trim();
System.out.println(s.substring(0, s.length() - 1));//hello
// 上下 两个s不一样 s.lenth变了
java 位移等操作
最新推荐文章于 2022-12-27 17:20:51 发布