作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在研究一个简单的组合学部分,发现我需要在给定 4 位 srring 中其他两位的位置的情况下恢复两位的位置。
例如,(0,1)映射到(2,3),(0,2)映射到(1,3)等,总共有六种组合。
我的解决方案是使用四个嵌套的三元运算符来测试位:
ab is a four bit string, with two bits set.
c = ((((ab & 1) ? (((ab & 2) ? ... ))) : 0)
abc = ab | c
recover the last bit in the same fashion from abc.
我必须澄清,在不使用 for 循环的情况下,我的目标语言是 C++ 元编程模板。我知道我明确指定了语言,但我认为它仍然不可知
你能想到更好的方法/更聪明的方法吗?谢谢
最佳答案
只需将值与二进制 1111 进行异或 - 这将翻转四位,为您提供另外两位。
cd = ab ^ 0xF;
关于algorithm - 给定一组四个中的两个位,找到另外两个位的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2503863/
我是一名优秀的程序员,十分优秀!