java的位操作符,最早来源于一个想法,工程师想在机顶盒里面控制硬件,而c和c++本身就有对硬件操作的位操作,所以java借鉴了这个方法。
public class C311 {
static int a = -5;
static int b = 5;
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(a >> 2);
System.out.println(b >> 2);
System.out.println(a << 2);
System.out.println(b << 2);
/** -5 用二进制表示:
* 1)5 -- 0000 0101
* 2)补码 -- 1111 1010
* 3)末尾加1 -- 1111 1011 = -5
*
* -5 向左移2位
* 1)末尾补0 -- 1110 1100
* 2)补码 -- 0001 0011
* 3)末尾加1 -- 0001 0100 = -20
*
* -5 向右移2位
* 1)高位补1 1111 1110
* 2)补码 -- 0000 0001
* 3)末尾加1 -- 0000 0010 = -2
*
* 5用2进制表示 -- 0000 0101
* 5向左移动2位
* 1)末尾补0 0001 0100 = 20
*
* 5向右移动2位
* 1)高位补0 0000 0001 =1
* */
int c = -1; System.out.println(Integer.toBinaryString(c)); System.out.println(Integer.toBinaryString(c >>> 2)); /** >>> 位操作符是c、c++中没有的。 * 这种符号规定,无论正负,都在高位补0 * * */ char d = 'a'; System.out.println((d)); System.out.println(((char)(d >> 1))); System.out.println(((char)(d << 1)));
}
}
|
阅读(868) | 评论(0) | 转发(0) |