[关闭]
@Warning1943 2017-03-29T03:24:05.000000Z 字数 1070 阅读 1408

位运算

位运算、位运算符、逻辑运算符


位运算符

Java定义了位运算符,应用于整数类型(int),长整型(long),短整型(short),字符型(char),和字节型(byte)等类型。
位运算符作用在所有的位上,并且按位运算。假设a = 60,b = 13;它们的二进制格式表示将如下:
A = 0011 1100
B = 0000 1101
A&b = 0000 1100
A | B = 0011 1101
A ^ B = 0011 0001
~A= 1100 0011
下表列出了位运算符的基本运算,假设整数变量A的值为60和变量B的值为13:
操作符 描述 例子
列表项
1.& 如果相对应位都是1,则结果为1,否则为0 (A&B),得到12,即0000 1100
2. | 如果相对应位都是0,则结果为0,否则为1 (A | B)得到61,即 0011 1101
3. ^ 如果相对应位值相同,则结果为0,否则为1 (A ^ B)得到49,即 0011 0001
4. 〜 按位补运算符翻转操作数的每一位,即0变成1,1变成0。 (〜A)得到-61,即1100 0011
5. << 按位左移运算符。左操作数按位左移右操作数指定的位数。 A << 2得到240,即 1111 0000
6. >> 按位右移运算符。左操作数按位右移右操作数指定的位数。 A >> 2得到15即 1111
7. >>> 按位右移补零操作符。左操作数的值按右操作数指定的位数右移,移动得到的空位以零填充。

|= 类似于 +=

  1. notification.defaults |= Notification.DEFAULT_SOUND;
  2. //等同于
  3. notification.defaults = notification.defaults | Notification.DEFAULT_SOUND;

布尔值位运算

JAVA里的布尔运算符可以分为【二进制布尔运算符】和【条件布尔运算符】。
1.二进制布尔运算符
二进制布尔运算符:与(&),或(|),异或(^),当其操作数是布尔值时,它们就是逻辑运算符,注意:对于运算符两边的操作数不管真假与否,都会先计算出来结果后再进行布尔逻辑运算;当其操作数是整数时,它们就是位运算符。
2.条件布尔运算符
条件布尔运算符:条件与(&&),条件或(||),条件非(!)运算符,只能对布尔值进行计算,并且从左到右,如果有一个操作数为真,就不再计算它右边的操作数,直接得出计算结果。

二进制转成十进制

首先将二进制数补齐位数,首位如果是0就代表是正整数,如果首位是1则代表是负整数。
先看首位是0的正整数,补齐位数以后,将二进制中的位数分别将下边对应的值相乘,然后相加得到的就为十进制,比如1010转换为十进制,方法如图7所示。
cmd-markdown-logo

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注