public class Demo02 { public static void main(String[] args){ int a = 500; System.out.println(Integer.toBinaryString(a)); a = a>>2; System.out.println(Integer.toBinaryString(a)); } }
public class Demo02 { public static void main(String[] args){ int a = 500; System.out.println(Integer.toBinaryString(a)); a = a>>>2; System.out.println(Integer.toBinaryString(a)); } } 上面的有点小瑕疵 应该是带符号的右移 500是正数,右移加零哈
int a = 500; String bs = Integer.toBinaryString(a); //int占32位 while (bs.length() < 32) bs = "0" + bs; System.out.println(bs); byte b = (byte) a;// 一个byte占8位,强制类型转换截取低8位 bs = Integer.toBinaryString(b); System.out.println(bs.substring(bs.length() - 8)); b >>= 2;// 带符号右移2位 bs = Integer.toBinaryString(b & 0xff); System.out.println(bs.substring(bs.length() - 8));00000000000000000000000111110100 11110100 11111101
低八位是用于双字节的,java int是4个字节,你怎么区分低8位呢如果是0001 0011 1000 1000的话 低8位是1000 1000
带符号右移两位
1010 0010补齐前面3个字节是
0000 0000 0000 0000 0001 0011 1010 0010
System.out.println(Integer.toBinaryString(b));b >>= 2;System.out.println(Integer.toBinaryString(b));
public class Demo02 {
public static void main(String[] args){
int a = 500;
System.out.println(Integer.toBinaryString(a));
a = a>>2;
System.out.println(Integer.toBinaryString(a));
}
}
public class Demo02 {
public static void main(String[] args){
int a = 500;
System.out.println(Integer.toBinaryString(a));
a = a>>>2;
System.out.println(Integer.toBinaryString(a));
}
}
上面的有点小瑕疵 应该是带符号的右移 500是正数,右移加零哈
int a = 500;
String bs = Integer.toBinaryString(a);
//int占32位
while (bs.length() < 32)
bs = "0" + bs;
System.out.println(bs); byte b = (byte) a;// 一个byte占8位,强制类型转换截取低8位 bs = Integer.toBinaryString(b);
System.out.println(bs.substring(bs.length() - 8)); b >>= 2;// 带符号右移2位 bs = Integer.toBinaryString(b & 0xff);
System.out.println(bs.substring(bs.length() - 8));00000000000000000000000111110100
11110100
11111101