Haskell程式:查詢給定數字的1的補碼
本教程將幫助我們找到給定數字的1的補碼。二進位制數的1的補碼是透過反轉數字的每一位來找到的。1變成0,0變成1。這也被稱為按位非運算。數字的1的補碼在某些型別的錯誤檢測和糾錯示例中很有用,以及在某些型別的數字邏輯電路中。1的補碼最常見的用途是在有符號數表示中,它用於表示負數。
例如,如果一個數字的二進位制表示是“1010”,則它的1的補碼將是“0101”。
演算法
步驟1 - 匯入Data.Bits模組以使用complement函式。
步驟2 - 定義onesComplement函式。
步驟3 - 程式執行將從main函式開始。main()函式控制整個程式。它寫成 main = do。
步驟4 - 命名為“num”的變數被初始化。它將包含需要計算1的補碼的數字。
步驟5 - 使用‘putStrLn’語句和show函式顯示最終結果值。
使用Complement函式
在這個例子中,我們將數字傳遞給onesComplement函式,然後該函式使用complement函式找到該數字的1的補碼。然後它打印出原始數字的1的補碼。
示例1
import Data.Bits onesComplement :: Int -> Int onesComplement n = complement n main :: IO () main = do let num = 10 putStrLn $ "The 1's complement of " ++ show num ++ " is " ++ show (onesComplement num)
輸出
The 1's complement of 10 is -11
使用bitSize函式
在這個例子中,onesComplement函式使用輸入數字的bitSize來計算可以用該位數表示的最大值。然後它從這個最大值中減去輸入數字來找到1的補碼。
示例2
import Data.Bits onesComplement :: Int -> Int onesComplement n = (2^(bitSize n) - 1) - n main :: IO () main = do let num = 10 putStrLn $ "The 1's complement of " ++ show num ++ " is " ++ show (onesComplement num)
輸出
The 1's complement of 10 is -11
使用xor函式
在這個例子中,我們將從Data.Bits模組匯入特定的xor函式和shiftL運算子來找到給定數字的1的補碼。
示例3
import Data.Bits (finiteBitSize, xor, shiftL) onesComplement :: Int -> Int onesComplement n = n `xor` (1 `shiftL` finiteBitSize n - 1) main :: IO () main = do let num = 10 putStrLn $ "The 1's complement of " ++ show num ++ " is " ++ show (onesComplement num)
輸出
The 1's complement of 10 is -11
結論
在Haskell中,有多種方法可以找到給定數字的1的補碼。這可以透過使用complement函式、使用bitSize函式或使用xor函式來實現。二進位制數的1的補碼是透過反轉數字的每一位來找到的。1變成0,0變成1。這也被稱為按位非運算。1的補碼最常見的用途是在有符號數表示中,它用於表示負數。
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP