相关疑难解决方法(0)

逐位运算一元〜(反转)

我对~操作员有点困惑.代码如下:

a = 1
~a  #-2
b = 15
~b  #-16
Run Code Online (Sandbox Code Playgroud)

怎么~办?

我想,~a会是这样的:

0001 = a
1110 = ~a 
Run Code Online (Sandbox Code Playgroud)

为什么不?

python bit-manipulation

53
推荐指数
4
解决办法
7万
查看次数

使用位操作理解 python 中的二进制加法

我正在寻找这个问题的解决方案:

给定两个整数ab,返回两个整数的和,而不使用运算符+-。(输入限制:-1000<= a, b <= 1000

在所有这些解决方案中,我很难理解为什么这些解决方案在评估时超过 32 位最大位数~(a ^ mask)时会出现问题[请参阅下面的代码]。a0x7fffffffa + b

def getSum(self, a: int, b: int) -> int:
    
    # 32bit mask
    mask = 0xFFFFFFFF # 8Fs = all 1s for 32 bits

    while True: 
        # Handle addition and carry 
        a, b = (a ^ b) & mask, ((a & b) << 1) & mask
        if b == 0:
            break …
Run Code Online (Sandbox Code Playgroud)

python bit-manipulation

5
推荐指数
1
解决办法
299
查看次数

标签 统计

bit-manipulation ×2

python ×2