Hmm...
string s = "";
for (int i = 0; i < 8; i++)
{
s += (value & 0x80) > 0 ? "1" : "0";
value <<= 1;
}
return s;
No więc tak:
string s = "";
Do stringa s zapisujemy wynik działania funkcji, czyli napis reprezentujący tą liczbę w systemie dwójkowym.
for (int i = 0; i < 8; i++)
Bajt ma 8 bitów, nie?
s += (value & 0x80) > 0 ? "1" : "0";
Magia.
(value & 0x80) bierze najbardziej znaczący bit liczby, czyli jeśli masz liczbę 154 == 0b10011010 to zwróci 1. (dlaczego - & to bitowe and, czyli się wykonuje coś takiego:
10000000 (0x80)
& 10011010 (154)
= 100000000
) - jeśli nie wiesz dlaczego, http://en.wikipedia.org/wiki/Bitwise_operation
value <<= 1;
value = value * 2, czyli przesunięcie bitowe w lewo
Jeśli mamy tą nieszczęsną 154 == 10011010, to 154 << 1 daje coś takiego:
10011010 << 1
100110100
(przesuwa bity w lewo i dopisuje zero na końcu).
No i jeśli połączysz to wszystko, wychodzi na to że ta funkcja bierze po kolei bity od lewej i dopisuje do stringa.
Nieszczególnie to szczęśliwie napisane - po pierwsze, tworzy 8 niepotrzebnych napisów w pamięci (string jest immutable).