Haskell 整数的计数零

Haskell 整数的计数零,haskell,biginteger,Haskell,Biginteger,我想知道是否有一种快速的方法来计算Haskell中整数的尾随零数。这个操作对于Integer是有意义的,但不幸的是,它被其他在FiniteBits中没有意义的操作所包围。我知道的唯一方法就是循环。有没有更快的方法可以做到这一点?因为整数是任意大的,我认为你不能避免某种循环FiniteBits是对尾随零进行O(1)计数的正确抽象。countTrailingZeros是二进制或十进制意义上的吗?为什么循环比任何其他实现方法都要慢?如果目标是速度,编写代码、概要文件,然后决定是否需要改进。这种感觉是二

我想知道是否有一种快速的方法来计算Haskell中整数的尾随零数。这个操作对于Integer是有意义的,但不幸的是,它被其他在FiniteBits中没有意义的操作所包围。我知道的唯一方法就是循环。有没有更快的方法可以做到这一点?

因为
整数
是任意大的,我认为你不能避免某种循环
FiniteBits
是对尾随零进行O(1)计数的正确抽象。
countTrailingZeros
是二进制或十进制意义上的吗?为什么循环比任何其他实现方法都要慢?如果目标是速度,编写代码、概要文件,然后决定是否需要改进。这种感觉是二进制的,就像FiniteBits一样。整数位上的循环比整数分支上的循环更糟糕我对Haskell不太了解,抱歉,但我知道有聪明的算法来计算32位整数的尾随零,比循环和重复移位更快。看看黑客的喜悦网站。当然,您只需要对最后一个非零分支执行此操作。由于
Integer
任意大,我认为您无法避免某种循环
FiniteBits
是对尾随零进行O(1)计数的正确抽象。
countTrailingZeros
是二进制或十进制意义上的吗?为什么循环比任何其他实现方法都要慢?如果目标是速度,编写代码、概要文件,然后决定是否需要改进。这种感觉是二进制的,就像FiniteBits一样。整数位上的循环比整数分支上的循环更糟糕我对Haskell不太了解,抱歉,但我知道有聪明的算法来计算32位整数的尾随零,比循环和重复移位更快。看看黑客的喜悦网站。当然,您只需要对最后一个非零肢体执行此操作。