Java 运算符

2022-08-02  本文已影响0人  Tinyspot

运算符

int value = 1;
boolean flag = value == 1 ? true : false;

运算符优先级

进制

二进制:0, 1
八进制:0~8
十进制:0~9
十六进制:09、AF

进制转换:
十进制转二进制:除 2 取余数,逆序排列

位运算

位运算:按二进制位(bit)进行运算
按位运算符:& | ^ ~

布尔运算符
& 与 && 运算结果一样,只不过 && 会短路
布尔运算符通常用于布尔值,而按位运算符通常用于整数值
布尔运算符是短路,但按位运算符不是短路

位移运算符

按位与(&)

运算规则:0&0=0; 0&1=0; 1&0=0; 1&1=1;

“与运算”的用途:
(1)清零。如果想将一个单元清零,即使其全部二进制位为0,只要与一个各位都为零的数值相与,结果为零。
(2)取一个数中指定位
取 X 的低4位,用 X & 0000 1111 = 0000 1110 即可得到;

按位或(|)

运算规则:0|0=0; 0|1=1; 1|0=1; 1|1=1;
用途:
(1)常用来对一个数据的某些位置1。
方法:找到一个数,对应X要置1的位,该数的对应位为1,其余位为零。此数与X相或可使X中的某些位置1。

例:将X=10100000的低4位置1 ,用 X | 0000 1111 = 1010 1111即可得到。

按位异或(^)

运算规则:0^0=0; 0^1=1; 1^0=1; 1^1=0;
用途:
(1)使特定位翻转找一个数,对应X要翻转的各位,该数的对应位为1,其余位为零,此数与X对应位异或即可
(2)与 0 异或,保留原值 ,X ^ 0000 0000 = 1010 1110。

按位取反(~)

运算规则:~1=0; ~0=1;

复合赋值运算符

运算符 示例
&= a &= b a = a & b
&|= a |= b a = a |b
^= a ^= b a = a ^ b
>>= a >>= b a = a >> b
<<= a <<= b a = a << b

不同长度的数据进行位运算,系统会将二者按右端对齐,然后进行位运算。

掩码操作

/**
 * 掩码(MASK)
 * 标识符,每个bit表示一种状态
 */
public static void main(String[] args) {
    int base = 1;
    // 0001
    int is_dev_mask = base;
    // 0010
    int is_en_mask = base << 1;
    // 0100
    int is_alt_mask = base << 2;

    // 0101
    int value = 5;

    // 0101 & 0001 = 0001
    boolean isDev = (value & is_dev_mask) != 0;
    // 0101 & 0010 = 0000
    boolean isEn = (value & is_en_mask) != 0;
}
上一篇下一篇

猜你喜欢

热点阅读