看一下整数44 - 我需要 Math.CEIL (log(2) 44)
个二进制位来表示 44
。(答案为6位)
6个二进制位:
___ ___ ___ ___ ___ ___
32 16 8 4 2 1
但是我如何检查(例如)8
的位是否已经被检查了呢?
一个简单的解决方案是:
((1<<3) & 44)>0
,这将检查位是否已设置。
但请注意,在计算机背后,它会将44
转换为其二进制表示,并通过按位操作来检查位是否已设置。
另一种解决方案是,通过使用循环中的toString(2)
或mod%2
来构建二进制。
问题
数学上,通过哪个公式可以测试第n
位是否已设置?
(我更喜欢非循环运算而是纯粹的单个数学表达式)
toString
或%
更高效)。或者,你可以使用log
,显然你已经知道了。 - Amadan