Tag: 按位运算符

C# – 快速比较2个整数,逐位比较,输出多于一个整数,可能吗?

我有两个输入整数和一个输出列表 myoutputlist。 我的意见可以说 A = 0x 110101 B = 0x 101100 然后我根据A和B数计算了一个C整数。我已经编码了它的算法,我可以计算C整数。 C整数表示应该更改哪些位。 1值表示改变位,0值表示不变位。 每次只能更改一位。 由于C整数取决于A和B输入,有时需要改变1位,有时3位,有时8位。 在给定的A和B值中,我有如下的C整数 C = 0x 0 1 00 1 0(1代表改变值;在这种情况下应改变第二和第五位) 因为C整数的值为“1”两次; 在这种情况下应该有2个结果 结果1 – 仅更改第二位,其他位与A(0x110101)相同: 改变A => D1 = 1101 1 1的第二位 结果2 – 仅改变第五位,其他位与A(0x110101)相同: 改变A => D2 = 1 1 0101的第五位 我在想的是使用for循环,逐步移动A和C,并使用&1掩码到C? 并检查它是否等于“1” for(i=0;i>i)&1; //I tried to check if […]

ushort上的C#按位移位(UInt16)

我需要对16位整数(ushort / UInt16)执行按位左移,但C#中的按位运算符似乎只适用于int(32位)。 我如何使用<< on ushort,或者至少通过简单的解决方法获得相同的结果?

如何利用C#中的掩码数组快速将两个图像byte 数组组合在一起

简而言之,我有两个图像,我想使用一个掩码覆盖另一个,以便只显示第二个图像的一部分。 这是实时图像处理程序的一部分,因此我需要尽可能快地进行操作。 具体来说,我有两个32位图像BGR字节数组。 另外,我有一个表示图像掩码的字节数组。 我想生成一个新的字节数组,其中字节数组A使用掩码数组重叠在字节数组B的顶部,以决定使用哪个字节。 最快的方法是什么? 我正在看这篇关于老式精灵屏蔽的维基百科文章,但我不知道如何最好地将其转换为C#。 http://en.wikipedia.org/wiki/Mask_(computing ) 编辑:我忘了提到我可以重新构建任何或所有这些以使其运行得更快。

我如何从int得到一个位?

我明白那个: int bit =(number >> 3)&1; 将给我从左边的位3位,所以假设8是1000所以这将是0001。 我不明白的是,“&1”将删除除最后一位之外的所有内容,以显示简单为“1”的输出。 我知道这有效,我知道如何从一个int获得一点但是代码是如何提取单个位的呢? 码… int number = 8; int bit = (number >> 3) & 1; Console.WriteLine(bit);

C# – | 和&运营商?

编辑:我现在的主要问题是为什么需要重载这两个运算符才能使用&&和|| 运营商。 短路运营商不会采用对象的真值或假值并进行比较吗? 在哪里使用&&和|| 运营商是 和&使用? 我正在读C#,完整的参考资料,我对|很困惑 和&运营商。 我习惯于将它们作为比较运算符来比较两个整数的位,但它们被解释为原始逻辑运算符,其中&&和|| 是短语版本,当语句肯定是某个值时,它会停止测试值。 这是否意味着两个运算符有多种用途,或者C#是否在幕后类型转换中做了一些操作? 此外,使用&&和||时 一个类的运算符,为什么这样做 并且必须超载? 为什么不能只重载类的真值和假值?