Koniunkcja bitowa - wytłumaczenie działania

0

Witam, mógłby mi ktoś wytłumaczyć czemu po skompilowaniu poniższej koniunkcji bitowej :

Console.WriteLine (10 & 2);

wyskakuje że tylko 2 jest prawdziwe. Koleś w kursie Online, który ogladam tak to tłumaczy ze za chiny niemoge pojąć.
Rozpisał to tak że dziesięć to 1 0 1 0, a dwójka to 0 0 1 0 i z tych dwóch tylko dwójka jest prawdziwa.
Z góry dziękuje za odpowiedź.
Pozdrawiam :)

dodanie znacznika <code class="csharp"> - fp

0

Każdą parę bitów na tej samej pozycji rozpatrujesz osobno i tyle.

1

1 0 1 0
0 0 1 0

Teraz patrz na każdą parę kolumnami i w wyniku zapisuj 1 tylko jeśli oba elementy pary mają 1.
Pierwsza kolumna to 1 i 0 więc 0
Druga kolumna to 0 i 0 więc 0
Trzecia kolumna to 1 i 1 więc 1
Czwarta kolumna to 0 i 0 więc 0

0

Rozpisał to tak że dziesięć to 1 0 1 0, a dwójka to 0 0 1 0 i z tych dwóch tylko dwójka jest prawdziwa.

No i prawdę napisał; Polecam najpierw się pouczyć: Wikipedia - Koniunkcja (logika), a potem ewentualnie zadawać pytania.

0

Dzieki Shalon, fajnie to wytłumaczyłeś, tylko powiedz mi proszę czemu akurat dwójke zwraca jako true, a nie dziesiątkę?

I dalej do : Furious Programming na Wiki czytam : " Wynik zawiera jedynki na tych pozycjach, na których w obydwu ciągach występowała jedynka" i niestety dalej nie rozumiem. Dla Was może to wydawać sie banalne, ale dla kogoś kto dopiero raczkuje w temacie nie :)

1

No ale czego nie rozumiesz? o_O

Wynik zawiera jedynki na tych pozycjach, na których w obydwu ciągach występowała jedynka

Masz dwa ciagi: 1010 i 0010. Zwracasz taki ciąg gdzie w obu ciągach, na tych samych pozycjach masz 1, czyli tak jak pokazałem wyżej będzie to 0010. Tak sie składa że 0010 zapisane binarnie to liczba 2.
0010 = 020 + 121 + 022 + 023 = 2
Analogicznie 10 to byłoby
1010 = 020 + 121 + 022 + 123 = 10
(mnożymy od końca, każdą cyfrę razy kolejną potęgę liczby 2)

1

@dstosa - podałem Ci link do artykułu, w którym napisane jest czym jest koniunkcja i na jakiej zasadzie działa; Dodatkowo (skoro już o tej "prawdziwości" napisałeś) jest tam tablica prawdy, pod którą napisane jest czym jest zdanie prawdziwe (z porównania dwóch jedynek) i zdanie fałszywe (koniunkacja zer lub zer z jedynkami):

and.png

Wynik zawiera jedynki na tych pozycjach, na których w obydwu ciągach występowała jedynka

Wybacz że spytam, ale: Ty polskiego nie rozumiesz?


@Shalom wyjaśnił matematycznie, ja spróbuję inaczej; Załóżmy, że masz dwie liczby:

18 - 10010
22 - 10110

teraz wykonujesz koniunkcję, czyli porównujesz kolumnami poszczególne bity obu liczb i w kolejnych krokach po sprawdzeniu kolumn od lewej do prawej otrzymamy:

10010 (18)
10110 (22)
-----
1

10010 (18)
10110 (22)
-----
10

10010 (18)
10110 (22)
-----
100

10010 (18)
10110 (22)
-----
1001

10010 (18)
10110 (22)
-----
10010 (wynik: 18)

Rozumiesz? Jeśli w danej kolumnie na tych samych pozycjach znajdują się dwie jedynki - wychodzi jedynka; Jeśli są dwa zera lub zero i jeden - wychodzi zero; Czyli jeden wyjdzie tylko z koniunkcji dwóch jedynek, w przeciwnym wypadku wychodzi zero;

Już łatwiej tego nie można wytłumaczyć.

0

Ok, nareszcie pojąłem..dzieki wielkie Wam za cierpliwość.

1 użytkowników online, w tym zalogowanych: 0, gości: 1