计算机基础 补码 位操作
Java中的Integer.toBinaryString(i)可以将整数转化为二进制的字符串,不过这个没有输出前面额外的零。
?
有符号的整数 原码 反码 补码
47 00101111 00101111 00101111(正数补码和原码、反码相同,不能从字面理解)
-47 10101111 11010000 11010001(负数补码是在反码上加1)
位操作:( i 为一个有符号数)
【-i & i 】得到 i 最低位为1的数。应用【i==(-i & i)】i是不是0,或只有一个1.
?
?看一些程序库里面的类型,总是喜欢定义为int,然后用位操作,这中方法应该效率高些,明显要比写成字符串然后比较要效率高很多,如:Zest中的connections的类型:
/** * Bitwise ANDs the styleToCheck integer with the given style. * * @param style * @param styleToCheck * @return boolean if styleToCheck is part of the style */public static boolean checkStyle(int style, int styleToCheck) {return ((style & styleToCheck) == styleToCheck);}
?
判断类型方便,快些。
?