相关疑难解决方法(0)

11
推荐指数
1
解决办法
5216
查看次数

如何在Python中对有符号和无符号值进行算术右移

某些语言(例如 Java、Verilog)同时具有按位逻辑运算符(<<、>>)和算术移位运算符(<<<、>>>)。

对于无符号值,逻辑移位和算术移位具有相同的操作。假设 8'b11000101 是 8 位无符号数 197 的二进制表示,那么

8'b11000101 >>  2 => 8'b00110001
8'b11000101 >>> 2 => 8'b00110001
8'b11000101 <<  2 => 8'b00010100
8'b11000101 <<< 2 => 8'b00010100
Run Code Online (Sandbox Code Playgroud)

对于有符号值,只有算术和逻辑左移操作是相同的,但算术右移会导致符号扩展。假设 8'b11000101 是 8 位有符号数 -59 的二进制表示,那么

8'b11000101 >>  2 => 8'b00110001
8'b11000101 >>> 2 => 8'b11110001
8'b11000101 <<  2 => 8'b00010100
8'b11000101 <<< 2 => 8'b00010100
Run Code Online (Sandbox Code Playgroud)

Python只有逻辑移位运算符,没有算术移位运算符。那么如何在Python中实现有符号和无符号值的算术右移呢?

python math bit-shift shift bitwise-operators

9
推荐指数
2
解决办法
1万
查看次数