我试图找到一个位串的奇偶校验,如果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;
}
Run Code Online (Sandbox Code Playgroud) 您有一个主色的图像,您需要根据给定的rgb值将其转换为另一个.
有许多不同但相似的颜色也需要转换,这使得简单的"全部改变(0,0,0) - 像素 - ( - 0,100,200)"解决方案毫无价值.
如果有人能指出我正确的方向,那么算法或图像处理技术将使这项任务变得更易于管理.
我一直在使用PIL来尝试这个问题,但任何一般提示都会很好.
编辑:
另外,我已经使用了这个其他的答案(用Python PIL更改图像色调)来做我要求的部分(色调变化),但它没有考虑饱和度或值
编辑:http://dpaste.org/psk5C/显示使用pil来查看我必须使用的rgb值以及与之一起使用的hsv值.
python image-manipulation image-processing python-imaging-library