例如,CI可以将32位无符号值中的#10位置零,如下所示:
unsigned long value = 0xdeadbeef;
value &= ~(1<<10);
Run Code Online (Sandbox Code Playgroud)
我怎么用Python做到这一点?
Fre*_*son 49
Python的整数位运算的工作很像C中的&,|并^在Python运营商合作,就像C中的~操作符作为一个在C符号整数; 也就是说,~x计算-x-1.
你必须要小心左移,因为Python整数不是固定宽度.使用位掩码来获得低位.例如,要做相当于32位整数的移位(x << 5) & 0xffffffff.
Python 具有 C 风格的位操作运算符,因此您的示例在 Python 中实际上是相同的,只是没有类型关键字。
value = 0xdeadbeef
value &= ~(1 << 10)
Run Code Online (Sandbox Code Playgroud)
一些常见的位操作可以作为示例:
def get_bit(value, n):
return ((value >> n & 1) != 0)
def set_bit(value, n):
return value | (1 << n)
def clear_bit(value, n):
return value & ~(1 << n)
Run Code Online (Sandbox Code Playgroud)
用法例如
>>> get_bit(5, 2)
True
>>> get_bit(5, 1)
False
>>> set_bit(5, 1)
7
>>> clear_bit(5, 2)
1
>>> clear_bit(7, 2)
3
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
44786 次 |
| 最近记录: |