使用“sall”指令快速询问装配中的左移位。
据我所知,“sall rightop,leftop”将转换为“leftop=leftop<但是当整数是无符号的,32位,并且类似于:
1111 1111 1111 1111 1111 0000 0010 0010
在这种情况下,左移位是否会变成11111111111111000010000010000100000?
显然这不是2^4的乘法。
谢谢!!

最佳答案

它是一个乘2^4,模2^32

n = (n * 2^4) % (2 ^ 32)

在这种情况下,可以通过执行左移和掩蔽来检测“移位”的位
dropped = (n >> (32-4)) & (1<<4-1)

关于c - 汇编中无符号32位整数的左移,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12957388/

10-11 20:03