gpt4 book ai didi

python - 二进制补码符号扩展 python?

转载 作者:行者123 更新时间:2023-12-02 07:20:49 24 4
gpt4 key购买 nike

我想知道是否有一种方法可以像在 Python 中的 C/C++ 中一样使用标准库(最好在位数组上)进行二进制补码符号扩展。

C/C++:

// Example program
#include <iostream>
#include <string>

int main()
{
int x = 0xFF;
x <<= (32 - 8);
x >>= (32 - 8);
std::cout << x;
return 0;
}

这是我编写的一个 Python 函数,它(在我的测试中)完成了同样的事情。我只是想知道是否有内置(或更快)的方法来做到这一点:

def sign_extend(value, bits):
highest_bit_mask = 1 << (bits - 1)
remainder = 0
for i in xrange(bits - 1):
remainder = (remainder << 1) + 1

if value & highest_bit_mask == highest_bit_mask:
value = (value & remainder) - highest_bit_mask
else:
value = value & remainder
return value

最佳答案

以下代码提供与您的函数相同的结果,但稍微短一些。另外,显然,如果您要将其应用于大量数据,您可以预先计算这两个掩码。

def sign_extend(value, bits):
sign_bit = 1 << (bits - 1)
return (value & (sign_bit - 1)) - (value & sign_bit)

关于python - 二进制补码符号扩展 python?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32030412/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com