我写这段代码来减去二进制值,我需要代替for循环使用,我需要使用LINQ来解决性能问题,我试过但是Ifailed,代码是
static void Main(string[] args)
{
byte[] data = { 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0 };
if (data[0] == 1)
{
byte[] One = new byte[data.Length];
One[One.Length - 1] = 1;
byte borrow = 0;
for (int i= data.Length -1 ; i > -1 ; i--)
{
if(borrow == 1 ) data[i] = 0;
if (data[i] == 0 && One[i] == 0)
{
borrow = 0; data[i] = 0;
}
else if (data[i] == 0 && One[i] == 1)
{
borrow = 1 ; data[i] = 1;
}
else if (data[i] == 1 && One[i] ==0)
{
borrow = 0; data[i] = 1;
}
else if (data[i] == 1 && One[i] == 1)
{
borrow = 0; data[i] = 0;
}
if (data[i] == 1) data[i] = 0; else data[i] = 1;
}
}
}
}
}
答案 0 :(得分:3)
Linq没有为你的示例代码添加任何受益者,它只是让它慢一点,因为一些内部函数调用,它只是在某些情况下实现了yield模式,但你的代码不需要这个,还有linq它更复杂,但您当前的代码很容易阅读。所以我建议不要使用linq,除非它让你的生活更美好。没有用linq做任何事情。
答案 1 :(得分:0)
为什么不将二进制数转换为整数类型,例如
Int32 x = Convert.ToInt32("100000100100", 2);
/* Perform your arithmetic here */
string result = Convert.ToString(x, 2);
我不确定这对性能有何影响,但我认为它比任何涉及LINQ的解决方案都要快。