我正在研究C#中的移位运算符,试图找出何时在我的代码中使用它们.
我找到了答案,但对于Java,你可以:
a)进行更快的整数乘法和除法运算:
*4839534*4*可以这样做: 4839534 << 2
要么
543894/2可以这样做:543894 >> 1
对于大多数处理器,移位操作比乘法更快.
b)将字节流重组为int值
c)用于加速图形操作,因为红色,绿色和蓝色由单独的字节编码.
d)将小数字装入一个长的...
对于b,c和d,我无法想象这里是一个真实的样本.
有谁知道我们是否可以在C#中完成所有这些项目?C#中的移位运算符是否有更实用的用途?
我正在阅读这里发布的一个问题:C#中的数独算法
其中一个解决方案是这段代码.
public static bool IsValid(int[] values) {
int flag = 0;
foreach (int value in values) {
if (value != 0) {
int bit = 1 << value;
if ((flag & bit) != 0) return false;
flag |= bit;
}
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
这个想法是它将检测值数组中的重复项; 但是我不知道有多少我不知所措.谁可以给我解释一下这个?
编辑:谢谢大家.这么多很棒的答案,我不知道如何选择一个.它现在非常有意义.
我想在.NET中实现两个整数的乘法而不使用乘法运算符
public uint MultiplyNumbers(uint x, uint y)
{
}
Run Code Online (Sandbox Code Playgroud)
任何的想法!