我对Haskell有点修补(并且非常享受自己),现在我想做一个零填充右移.
我小跑到了hackage并找到了Data.Bits,掀起了ghci,这就是我输入的内容(好吧,我当然没有键入-3):
:m Data.Bits
shiftR (-9) 2
-3
Run Code Online (Sandbox Code Playgroud)
Fantatstic,一个正常的右移,正如我所期待的那样.
好的,现在我真的会阅读文档.好的,我明白了unsafeShiftR
,但那不是我想要的.
那么,我错过了什么?在Haskell某处可以使用零填充右移功能(即当-9右移2时返回1073741821)?
Data.Bits
将签名类型考虑在内.但是,由于任何零填充右移和非零移位都会产生无符号类型,因此您只需将输入转换为正确大小的单词:
-- :m Data.Word
-- shiftR ((fromIntegral x) :: Word32) 2
shiftR (-9 :: Word32) 2
1073741821
Run Code Online (Sandbox Code Playgroud)