- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我试图找到一个位串的奇偶校验,如果 x 有奇数个 0,它会返回 1。
我只能使用基本的按位运算,到目前为止我已经通过了大部分测试,但我想知道两件事:
为什么 x ^ (x + ~1) 有效?我偶然发现了这一点,但如果有奇数位,它似乎给你 1,如果有偶数,它似乎给你其他东西。喜欢 7^6 = 1 因为 7 = 0b0111
这是解决问题的正确方向吗?我假设我的问题源于第一个操作,特别是 (x + ~1) 因为它会溢出某些 2 的补码。谢谢
代码:
int bitParity(int x) {
int first = x ^ (x + ~1);
int second = first ^ 1; // if first XOR gave 1 you'll return 0 here
int result = !!second;
return result;
}
最佳答案
据我所知,你的奇偶校验函数实际上并没有起作用——它似乎在大约一半的时间内得到了正确的答案,这与返回一个随机结果(或者甚至只返回 0 或 1 所有时间)。
有几个位级黑客确实实际工作于:http://graphics.stanford.edu/~seander/bithacks.html#ParityNaive - 你可能想看看最后一个:http://graphics.stanford.edu/~seander/bithacks.html#ParityParallel
关于c - 奇数位的位奇偶校验码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7530599/
http://opencv-code.com/quick-tips/implementation-of-guo-hall-thinning-algorithm/ 在看郭霍尔算法,但我不明白它说的那部分
我知道这个方法检查整数是否为偶数,但是具体如何检查呢?我理解斐波那契或阶乘等例子的递归是如何工作的,但不理解这个。我认为由于语法原因我不明白。 // Assume n >= 0 public stat
我被困在一个作业上,需要程序接受多个数字,然后如果是奇数则输出"is",如果是偶数则输出“否”,并且不知道如何让程序接受超过 1 个 int,然后输出正确的 println。这是我到目前为止的代码。
这个测试行得通吗?: if (testInt/2).ofType(Integer){ //to-do if even } 我假设它会 iff 编译器在 ofType() 之前解析 testIn
我正在尝试更好地排列图像,而不仅仅是 1 列中的图像。示例见附件,每篇文章的图片可以在左右。 这是我的代码。HTML: Content 1
DAY16共3题: 奇♂妙拆分(简单数学) 区区区间间间(单调栈) 小AA的数列(位运算dp) 🎈 作者:Eriktse 🎈 简介:19
我是一名优秀的程序员,十分优秀!