位运算符对应关系
| Delphi | C++, C#, Lua | 运算规则 | |
|---|---|---|---|
| 与 | and | & | 两个位都为1时,结果才为1 |
| 或 | or | | | 两个位都为0时,结果才为0 |
| 取反 | not | ~ | 两个位相同为0,相异为1 |
| 异或 | xor | ^ | 0变1,1变0 |
| 左移 | shl | << | 各二进位全部左移若干位,高位丢弃,低位补0 |
| 右移 | shr | >> | 各二进位全部右移若干位,对无符号数,高位补0,有符号数,各编译器处理方法不一样,有的补符号位(算术右移),有的补0(逻辑右移) |
运算的用途
清零
如果想将一个单元清零,即使其全部二进制位为0,只要与一个各位都为零的数值相与,结果为零。
取一个数的指定位
比如取数 X=1010 1110 的低4位,只需要另找一个数Y,令Y的低4位为1,其余位为0,即Y=0000 1111,然后将X与Y进行按位与运算(X&Y=0000 1110)即可得到X的指定位。
判断奇偶
只要根据最未位是0还是1来决定,为0就是偶数,为1就是奇数。因此可以用if ((a & 1) == 0)代替if (a % 2 == 0)来判断a是不是偶数。
本文详细介绍了位运算符在Delphi、C#和Lua中的对应规则,包括and、or、not、xor以及shl和shr的用法。重点讲解了如何使用位运算清零、提取特定位以及判断奇偶性,提供了实际操作示例。
1481

被折叠的 条评论
为什么被折叠?



