我可以在http://hackage.haskell.org/package/base-4.7.0.0/docs/Data-Bits.html#v:bit中看到如何使用
将Int,n转换为具有第n位设置的位bit :: Int -> a
但是,我该怎么做呢? (假设输入位只有1位设置?)
答案 0 :(得分:7)
由于base-4.8.0.0有
countLeadingZeros :: FiniteBits b => b -> Int
countTrailingZeros :: FiniteBits b => b -> Int
这些索引分别是从最重要和最不重要的结尾开始的最重要和最不重要的设置位。从finiteBitSize :: FiniteBits b => b -> Int
减去另一端的数量。
答案 1 :(得分:3)
PUT /v2/accounts/{accountId}/envelopes/{envelopeId}/documents
Headers:
Authorization "Bearer [token]"
Accept "application/json"
Content-Type "multipart/form-data; boundary=AAAAAA"
--AAAAAA
Content-Type: application/json
Content-Disposition: form-data
{
"documents": [
{
"documentId": 1,
"fileExtension": "pdf",
"name": "test file name.pdf"
}
]
}
--AAAAAA
Content-Type: application/pdf
Content-Disposition: file; filename="test file name.pdf"; fileExtension=pdf; documentId=1
Content-Transfer-Encoding: stream
[Binary output]
--AAAAAA--
通过计算尾随零的数量来实现这一点。减1会将尾随零变为1并重置应该存在的唯一值。
这很容易适应更一般的情况而不假设只设置了一位输入:popCount $ x-1
主要思想是相同的,带有popCount $ complement x .&. (x-1)
补集的ANDing摆脱了减法新创建的那些(这是唯一应该计算的)。