判断 | 结果 |
---|---|
(number & 1) == 0 | number为偶数 |
(number & 1) == 1 | number为奇数 |
支持这种算法的基础有:
1.偶数的二进制串的最后一位为0;奇数的二进制串的最后一位为1
2.& :只有双方均为true时结果为true,否则为false。
下面是100以内的二进制串表
偶数 | 二进制串 | 奇数 | 二进制串 |
---|---|---|---|
0 | 00000000 | ||
2 | 00000010 | 1 | 00000001 |
4 | 00000100 | 3 | 00000011 |
6 | 00000110 | 5 | 00000101 |
8 | 00001000 | 7 | 00000111 |
10 | 00001010 | 9 | 00001001 |
12 | 00001100 | 11 | 00001011 |
14 | 00001110 | 13 | 00001101 |
16 | 00010000 | 15 | 00001111 |
18 | 00010010 | 17 | 00010001 |
20 | 00010100 | 19 | 00010011 |
22 | 00010110 | 21 | 00010101 |
24 | 00011000 | 23 | 00010111 |
26 | 00011010 | 25 | 00011001 |
28 | 00011100 | 27 | 00011011 |
30 | 00011110 | 29 | 00011101 |
32 | 00100000 | 31 | 00011111 |
34 | 00100010 | 33 | 00100001 |
36 | 00100100 | 35 | 00100011 |
38 | 00100110 | 37 | 00100101 |
40 | 00101000 | 39 | 00100111 |
42 | 00101010 | 41 | 00101001 |
44 | 00101100 | 43 | 00101011 |
46 | 00101110 | 45 | 00101101 |
48 | 00110000 | 47 | 00101111 |
50 | 00110010 | 49 | 00110001 |
52 | 00110100 | 51 | 00110011 |
54 | 00110110 | 53 | 00110101 |
56 | 00111000 | 55 | 00110111 |
58 | 00111010 | 57 | 00111001 |
60 | 00111100 | 59 | 00111011 |
62 | 00111110 | 61 | 00111101 |
64 | 01000000 | 63 | 00111111 |
66 | 01000010 | 65 | 01000001 |
68 | 01000100 | 67 | 01000011 |
70 | 01000110 | 69 | 01000101 |
72 | 01001000 | 71 | 01000111 |
74 | 01001010 | 73 | 01001001 |
76 | 01001100 | 75 | 01001011 |
78 | 01001110 | 77 | 01001101 |
80 | 01010000 | 79 | 01001111 |
82 | 01010010 | 81 | 01010001 |
84 | 01010100 | 83 | 01010011 |
86 | 01010110 | 85 | 01010101 |
88 | 01011000 | 87 | 01010111 |
90 | 01011010 | 89 | 01011001 |
92 | 01011100 | 91 | 01011011 |
94 | 01011110 | 93 | 01011101 |
96 | 01100000 | 95 | 01011111 |
98 | 01100010 | 97 | 01100001 |
100 | 01100100 | 99 | 01100011 |
注意奇数和偶数的二进制串的最后一位。
基于这种规律和&运算的特性,我们能够进行如下判断:
1100010 98
0000001 1
----------
0000000 0
**************
1100001 97
0000001 1
----------
0000001 1
这种方式也可以用于判断负数的奇偶性,原理是相同的。
END