java学习日志-02
位运算(重点)-java位运算详解★★★★
- 4个位运算符:
- & 位运算与 当俩值为1时为1
- | 位运算或 有一个为1时为1
- ^ 位运算异或 两者不同时为1
- ~ 位运算非 1转0,0转1
下面代码实操下位运算符(所有原码反码补码都是2进制代码)
注意:位运算是基于二进制进行的
位运算二计算规则:
1.正数三码相同(原码反码补码)。
2.计算反码:除了符号位,其他的位数0转1,或1转0。
3.计算补码:反码+1。
4.高位在左低位在右。
5.高位的第一位为符号位,且1负0正。
6.0的反、补码都是0。
7.计算时用补码,返回结果时要转回原码。
解题:2&3
详解:
1. 获取2的2原码
00000000 00000000 00000000 00000010
2. 获取2的反码(因为是正数,都一样)
00000000 00000000 00000000 00000010
3. 获取2的补码
00000000 00000000 00000000 00000010
4. 获取3的补码
00000000 00000000 00000000 00000011
5.进行补码的运算
00000000 00000000 00000000 00000010
00000000 00000000 00000000 00000011
------------------------------------
00000000 00000000 00000000 00000010
6.基于正数三码相同,最终获取的原码为:
00000000 00000000 00000000 00000010
转换为十进制为:2
下面的代码用来鉴别结果
public class name {
public static void main(String[] args) {
System.out.println(2&3);
}
}
解题:~2
详解:
1. 直接获取2的2补码
00000000 00000000 00000000 00000010
2. 进行~2运算,全部取反
11111111 11111111 11111111 11111101
3. 补码转反码时-1
11111111 11111111 11111111 11111100
4. 反码转原码,除了符号位其他位取反
10000000 00000000 00000000 00000011
将结果转为十进制的最终结果为:-3
可以使用下面的代码进行鉴别:
public class name {
public static void main(String[] args) {
System.out.println(~2);
}
}
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 矢幽武博客!
评论