版权声明一:本文为博主原创文章,转载请附上原文出处链接和本声明。
版权声明二:本网站的所有作品会及时更新,欢迎大家阅读后发表评论,以利作品的完善。
版权声明三:对不遵守本声明或其他违法、恶意使用本网内容者,保留追究其法律责任的权利。
Java中的「与运算 & 」 规则 :都为1时才为1,否则为0
*** 即:两位同时为“1”,结果才为“1”,否则为0
例如:
1 | ini复制代码 public static void main(String args[]) { |
Java中的「或运算 | 」 规则 :有一个为1,则为1
- 即 :参加运算的两个对象只要有一个为1,其值为1。
例如:
1 | typescript复制代码 public static void main(String args[]){ |
Java中的「异或运算 ^ 」 规则 :都不同时,为1
- 即:参加运算的两个对象,如果两个相应位为“异”(值不同),则该位结果为1,否则为0。
例如:
1 | typescript复制代码 public static void main(String args[]){ |
Java中的「取反运算 ~ 」 规则 :按位取反
- 即:对一个二进制数按位取反,即将1变0,0变1。
- 按位取反运算符“~”的原理:是将内存中的补码按位取反(包括符号位)。
1. 二进制数在内存中是以补码的形式存放的。
2. 补码首位是符号位,0表示此数为正数,1表示此数为负数。
3. 正数的补码、反码,都是其本身。
4. 负数的反码是:符号位为1,其余各位求反,但末位不加1 。
5. 负数的补码是:符号位不变,其余各位求反,末位加1 。
6. 所有的取反操作、加1、减1操作,都在有效位进行。
+ 例如:正数
+ 正数9(二进制为:1001)在内存中存储为01001,必须补上符号位(开头的数字0为符号位)。
+ 转二进制:0 1001
+ 计算补码:0 1001
+ 按位取反:1 0110 (变成补码,这明显变成了一个负数补码,因为符号位是1)
+ 补码减1:1 0101
+ 在取反: 1 1010
+ 符号位为1是负数,即-10
+ 例如:负数
+ 负数-1(二进制为:0001)在内存中存储为10001,必须补上符号位(开头的数字1为符号位)。
+ -1的反码为11110
+ -1的补码为11111 (也可以理解为:反码末位加上1就是补码)
+ ~-1的取反 00000
+ ~-1结果为:0
例1:
1 | yaml复制代码package test2; |
例2:
1 | yaml复制代码package test2; |
更多请参考:
常用进制览表**
本文转载自: 掘金