2012-01-23 3 views
-2

Я пишу этот код, чтобы вычитать двоичные значения, мне нужно вместо для цикла использования, мне нужно использовать LINQ для проблемы с производительностью, я пытался, но Ifailed, кодПреобразовать с помощью LINQ

 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; 

       } 

      } 
     } 
    } 
} 
+3

И вопрос в том, что? – Oded

+3

LINQ внутренне также использует петли, почему вы думаете, что это даст вам преимущество в производительности? –

+0

Linq не даст вам лучшую производительность –

ответ

3

Linq Безразлично» t добавьте какого-либо получателя к вашему образцу кода, он просто сделает его немного медленнее, из-за некоторых вызовов функций внутри, он просто реализует шаблон доходности в некоторых случаях, но ваш код ему не нужен, также с linq это сложнее, но ваш текущий код легко читается. Поэтому я предлагаю не использовать linq, за исключением того, что он делает вашу жизнь лучше. не делая все с linq.

0

Почему бы не преобразовать двоичное число в целочисленный тип, например.

Int32 x = Convert.ToInt32("100000100100", 2); 

/* Perform your arithmetic here */ 

string result = Convert.ToString(x, 2); 

Я не уверен, что это касается производительности, но я бы предположил, что это быстрее, чем любое решение, связанное с LINQ.

+0

Мне нужно работать на двоичном firsst, и выбрать определенную часть и проложить остальные с нулем, а затем конвертировать – AMH

Смежные вопросы