ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

别再被Java移位运算符坑了!一针见血讲透,看完直呼内行

别再被Java移位运算符坑了!一针见血讲透,看完直呼内行 Java中的位运算符全解更新的时间是, 二零二二年, 零三月, 零二日, 十五时, 五十分钟, 零五秒 , 作者是, 小小茶花女。主要针对大家这儿, 对Java里的位运算符予以了详尽介绍, 文中示例代码介绍得极为详细, 具备 的参考价值, 感兴趣的小伙伴们能够予以参考一番, 期望能够给你带来助力。1. 按位与运算符按位与的运算规则是, 要把两边的数转变为二进制位, 接着运算最终值, 其运算规则就是只有两个都为真才是真: 11的结果等于1, 10的结果等于0, 01的结果等于0, 00的结果等于0。public class Main { public static void main(String[] args) { // 按位与运算符两边的条件值会先转换为2进制然后再比对运算 /** * 0 0 1 1 * 0 1 0 1 * ----------- * 0 0 0 1 */ int a 35; /** * 0 0 0 1 * 0 0 1 0 * ----------- * 0 0 0 0 */ int b 12; System.out.println(a);// 1 System.out.println(b);// 0 } }2. |按位或运算符按位或的计算方式是先把数转为二进制,然后进行计算, 按位与的计算方式同样是先转换为二进制再开展计算, 它们之间不一样的地方在于运算规则, 也就是一个为真那就为真, 具体体现为, 1|0等于1, 1|1等于1, 0|0等于0, 0|1等于1。public class Main { public static void main(String[] args) { // |按位或运算符两边的条件值会先转换为2进制然后再比对运算 /** * 0 0 1 1 * 0 1 0 1 * ------------- * 0 1 1 1 */ int a 3|5; /** * 0 0 0 1 * 0 0 1 0 * ------------- * 0 0 1 1 */ int b 1|2; System.out.println(a);// 7 System.out.println(b);// 3 } }3. ^异或运算符异或运算符, 按其名思义, 异的意思是不同, 它的运算规则是, 1异或0等于1, 1异或1等于0, 0异或1等于1, 0异或0等于0。public class Main { public static void main(String[] args) { /** * 0 0 1 1 * 0 1 0 1 * ------------- * 0 1 1 0 */ int a 3^5; /** * 0 0 0 1 * 0 0 1 0 * ------------- * 0 0 1 1 */ int b 1^2; System.out.println(a);// 6 System.out.println(b);// 3 } }4. 无符号右移运算符(1) 正数无符号右移无符号右移运算符跟右移运算符的主要差别在于负数的运算, 由于无符号右移是高位添0, 移动多少位就添加多少个0。对于十五这个数, 它所对应的二进制位呈现为零零零零一一一一 , 将其朝着右边移动两位之后得零零零零零零一一, 得出的最终结果是三。public class Main { public static void main(String[] args) { /** * 0000 1111 * --------------- * 0000 0011 */ System.out.println(152); // 3 } }(2) 负数无符号右移- 6的二进制, 是6的二进制进行取反这样的操 作, 之后再加上1得到的结果。可以知道, 6的二进制是0 0 0000 0110, 将其取反, 然后加1, 得到的是1 1 1111 1010。接着, 对1 1 1111 1010进行右移三位的操作, 得到0 1 1111 1111。public class Main { public static void main(String[] args) { System.out.println(-63); // 536870911 } }
返回列表