2013-04-10 16:19:29 -07:00
|
|
|
import Data.Bits
|
|
|
|
|
|
|
|
|
|
bitwise :: Int -> Int -> IO ()
|
2017-09-23 10:01:46 +02:00
|
|
|
bitwise a b =
|
|
|
|
|
mapM_
|
|
|
|
|
print
|
|
|
|
|
[ a .&. b
|
|
|
|
|
, a .|. b
|
|
|
|
|
, a `xor` b
|
|
|
|
|
, complement a
|
|
|
|
|
, shiftL a b -- left shift
|
|
|
|
|
, shiftR a b -- arithmetic right shift
|
|
|
|
|
, shift a b -- You can also use the "unified" shift function;
|
|
|
|
|
-- positive is for left shift, negative is for right shift
|
|
|
|
|
, shift a (-b)
|
|
|
|
|
, rotateL a b -- rotate left
|
|
|
|
|
, rotateR a b -- rotate right
|
|
|
|
|
, rotate a b -- You can also use the "unified" rotate function;
|
|
|
|
|
-- positive is for left rotate, negative is for right rotate
|
|
|
|
|
, rotate a (-b)
|
|
|
|
|
]
|
2013-04-10 16:19:29 -07:00
|
|
|
|
2017-09-23 10:01:46 +02:00
|
|
|
main :: IO ()
|
2013-04-10 16:19:29 -07:00
|
|
|
main = bitwise 255 170
|