-1

我一直在尝试提出一个函数,它被赋予一个 int 它将使用按位运算在给定位置进行一些修改:

例如:

修改位(int,pos)

modify_bit(0b10000, 1) 应该返回 0b11000

或者 modify_bit(0b10000, 6) 应该返回 0b100001

我已经进行了研究,但没有发现任何从左到右在位板上的给定位置修改位功能,而是我发现的所有功能,这可能是我正在寻找的从位置到右修改位的功能左边。

提前致谢!

4

1 回答 1

0

这是一件非常不寻常的事情。你确定这是规格吗?您通常不想扩展这样的位序列。但是,这可以满足您的要求:

def setbit( val, pos ):
    bits = len(bin(val))-2
    if pos >= bits:
        val <<= (pos-bits)
        bits = pos + 1
    val |= 1 << (bits - pos - 1)
    return val

def clrbit( val, pos ):
    bits = len(bin(val))-2
    if pos >= bits:
        val <<= (pos-bits)
        bits = pos + 1
    else:
        val &= ~(1 << (bits - pos - 1))
    return val

print( bin(setbit( 0b10000, 1 )))
print( bin(setbit( 0b10000, 6 )))
于 2021-03-08T23:05:33.710 回答