使用库函数获取给定数字所需总位数的Haskell程序
Haskell拥有内置函数,例如finiteBitSize、ceiling、logBase、length和showIntAtBase,可用于获取给定数字所需的总位数。在第一个示例中,我们将使用(bits = finiteBitSize (fromIntegral x :: Int))函数;在第二个示例中,我们将使用(bitsRequired n = ceiling (logBase 2 (fromIntegral (abs n) + 1)))函数;在第三个示例中,我们将使用(bitsRequired n = length $ showIntAtBase 2 intToDigit (abs n) "")函数。
算法
步骤1 − 导入内部库
步骤2 − 使用ceiling和logBase函数定义bitsRequired函数
步骤3 − 程序执行将从main函数开始。main()函数控制整个程序。它被编写为main = do。
步骤4 − 定义名为“x”的变量,用于保存需要计算总位数的数字。
步骤5 − 调用bitsRequired函数并将数字作为参数传递给它。
步骤6 − 调用函数后,将所需的结果总位数打印到控制台。
示例1
在这个示例中,使用finiteBitSize函数计算给定数字所需的总位数。
import Data.Bits (FiniteBits, finiteBitSize)
main :: IO ()
main = do
let x = 42 :: Int
bits = finiteBitSize (fromIntegral x :: Int)
putStrLn $ "The number " ++ show x ++ " requires " ++ show bits ++ " bits to represent."
输出
[1 of 1] Compiling Main ( main.hs, main.o ) Linking main ... The number 42 requires 64 bits to represent.
示例2
在这个示例中,使用ceiling和logBase函数计算给定数字所需的总位数。
import Numeric.Natural
bitsRequired :: Integer -> Int
bitsRequired n = ceiling (logBase 2 (fromIntegral (abs n) + 1))
main :: IO ()
main = do
let x = 42
bits = bitsRequired x
putStrLn $ "The number " ++ show x ++ " requires " ++ show bits ++ " bits to represent."
输出
[1 of 1] Compiling Main ( main.hs, main.o ) Linking main ... The number 42 requires 6 bits to represent.
示例3
在这个示例中,使用length和showIntAtBase函数计算给定数字所需的总位数。
import Numeric (showIntAtBase)
import Data.Char (intToDigit)
bitsRequired :: Integer -> Int
bitsRequired n = length $ showIntAtBase 2 intToDigit (abs n) ""
main :: IO ()
main = do
let x = 42
bits = bitsRequired x
putStrLn $ "The number " ++ show x ++ " requires " ++ show bits ++ " bits to represent."
输出
[1 of 1] Compiling Main ( main.hs, main.o ) Linking main ... The number 42 requires 6 bits to represent.
结论
数字所需的总位数取决于数字本身以及用于表示它的位数。例如,如果我们使用32位整数,则可以表示的最大值为2^31 - 1 = 2147483647,表示它需要31位。如果我们使用64位整数,则可以表示的最大值为2^63 - 1 = 9223372036854775807,表示它需要63位。我们可以使用某些函数在Haskell中计算相同的结果。
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP