Java 位运算超全面总结
1.原码、反码、补码 关于原码、反码、补码的相关知识作者不打算在这里长篇大论,相关知识已有别的大佬总结很好了,还请老铁自行 Google,不过有篇知乎回答是作者学编程以来见过对相关知识最通俗易懂,生动简洁的解释: 对原码、反码、补码最通俗易懂,生动简洁的解释 ,墙裂建议大家先看完这篇科普文章。在继续讨论之前你要先明白一点: 整数在计算机内部都是以补码形式存储的 。 2.Java 位运算概览 OK 都看到这儿了那我就假定你已经掌握了原码、反码、补码相关知识(虽然上面那段几乎啥也没讲,纯凑字数) 不废话了。 首先,在程序中,位运算符的优先级很低!且位运算是只针对整型(是的这里指所有整型)数据的,无论正负,先搞清楚这两点,我们继续说。 Java 中的位运算共有 与(&)、或(|)、非(~)、异或(^)、左移(<<)、右移(>>)、无符号右移(>>>) 这7种,概览见下表: 符号 含义 详解 & 位与 两个比特位都为 1 时,结果才为 1,否则为 0 (位与操作满足交换律和结合律,甚至分配律) | 位或 两个比特位都为 0 时,结果才为 0,否则为 1 (位或操作满足交换律和结合律,甚至分配律) ~ 位非 即按位取反,1 变 0,0 变 1 ^ 异或 两个比特位相同时(都为 0 或都为 1)为 0,相异为 1(异或操作满足交换律和结合律,甚至分配律。任何整数和自己异或的结果为 0