第二章 java基础(按位运算符)

—— 本文参照 Learn Java for Android Development (第三版)

赋值运算符
赋值运算符顾名思义就是把值赋给变量的。例如:int x = 4;这里等号两边的类型必须是一样的,否则就会报错。
Java还支持符合赋值,举个例子:pennies += 50;这个表达式其实等价于pennies = pennies+50.其他的复合运算符的原理跟这个是一样的。

位运算符
位运算包括:按位与(&)、按位取反(~)、按位异或(^)、按位或运算(|).这些操作都是用来对二进制形式的数据操作的,所以如果之前没有使用过这些运算符的话可看看下面的例子:
public class operatorTest
{
public static void main(String[] args)
{
System.out.println(~181);
System.out.println(26 & 183);
System.out.println(26 ^ 183);
System.out.println(26 | 183);
}
}
编译执行这段代码:
javac operatorTest.java
java operatorTest
打印结果如下:
-182
18
173
191
只看结果好像是看不出什么的,下面详细解释一下这个结果是怎么来的。我们先将所有的操作数转化为32位的二进制看看:
181 相当于 00000000000000000000000010110101
26 相当于 00000000000000000000000000011010
183 相当于 00000000000000000000000010110111
181按位取反得到的是11111111111111111111111101001010.因为最高位是符号位,如果最高位是1的话就表示负数。所以~181的结果是-182。
再看26&183
00000000000000000000000000011010
&
00000000000000000000000010110111

00000000000000000000000000010010
得到的结果就是18
26^183的结果如下:
00000000000000000000000000011010
^
00000000000000000000000010110111

00000000000000000000000010101101
结果是173
26|183的结果如下:
00000000000000000000000000011010
|
00000000000000000000000010110111

00000000000000000000000010111111
答案是191.

Page 58

你可能感兴趣的:(第二章 java基础(按位运算符))