python - 如何在python中获得逻辑正确的二进制移位

标签 python bitwise-operators

正如标题所示,在 JavaScript 中有一个特定的运算符 >>>。例如,在 JavaScript 中我们会得到以下结果:

(-1000) >>> 3 = 536870787

(-1000) >> 3 = -125

1000 >>> 3 = 125

1000 >> 3 = 125

那么有没有代表这个>>>的某种方法或操作符?

最佳答案

没有内置的操作符,但是你可以自己轻松模拟>>>:

>>> def rshift(val, n): return val>>n if val >= 0 else (val+0x100000000)>>n
... 
>>> rshift(-1000, 3)
536870787
>>> rshift(1000, 3)
125

以下替代实现无需 if:

>>> def rshift(val, n): return (val % 0x100000000) >> n

关于python - 如何在python中获得逻辑正确的二进制移位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5832982/

相关文章:

javascript - JS : Why is ~10 (binary, ~1010) = -11 (二进制, -1011)?

python - 生成文件的 MD5 校验和

python - 在不同机器上运行时,sqlalchemy 连接相同的凭据被拒绝

python - 如何计算Python中字符串中子字符串出现的次数?

c - C中按位运算符的不同结果

c - 如何使这一动态位范围代码 GCC 兼容 64 位编译器?

python - 如何在多维数组中找到 k 个最小数字的索引?

python - 是否可以在中间件中过滤掉一些数据库行?

Java:有人可以从 "Thinking in Java 4th edition"解释一下吗?

java - 为什么 (char)194 == 'Â' 而不是 (char)182 == 'Â'