Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Intrugująca rzecz w zadaniu domowym (poiom 1, lekcja operatory logiczne)

Ostatnio zmodyfikowano 2015-11-05 21:02
Autor Wiadomość
Uiskam
Temat założony przez niniejszego użytkownika
Intrugująca rzecz w zadaniu domowym (poiom 1, lekcja operatory logiczne)
» 2015-11-01 21:33:42
Zadanie poeksperymentowaniu z wartościami logicznym podanego programu. Następująca linijkę:
wynik = true && false || !true && false || !( !true && false );
 zmieniłem tak:
wynik = true & false | !true & false | !( !true & false );
. Program skompilował się i wszystko działało poprawnie. Zatem moje pytanie brzmi następująco: dlaczego na lekcji zostało podane, że i zapisujemy &&, a lub || skoro pojedynczy znak & czy | działa identycznie i wszystko jest dobrze?
P-139489
michal11
» 2015-11-01 21:49:24
Nie działa identycznie ( to, że akurat w twoim przypadku zadziałało to nie znaczy, że to jest reguła) operatory pojedyncze są binarnymi odpowiednikami operatorów podwójnych, czyli działają na bitach a nie na wartościach (u ciebie zadziałało, bo boole są traktowane jako bity)
P-139491
bombatom69
» 2015-11-05 17:45:56
To nie boole są traktowane jako bity tylko u niego reprezentacja całkowita wartości otrzymywanych w poszczególnych etapach nie wyjdzie poza najmłodszy bit, bo nie jest użyty żaden operator, który by mógł to zrobić.

Do pełni zrozumienia bezsensowności tego eksperymentu, trzeba zauważyć, że nie zamieniałeś operatorów wszystkich a wyłącznie operatory sumy i alternatywy. Zamień operator boolowski ! na binarny ~ i wówczas sobie poeksperymentuj.
Dokonaj sobie rzutowania wyników na int, najlepiej po każdej operacji.
Podam Ci przykład, krótki wynik operacji ~true nadal będzie odczytywany jako true.
P-139674
Rashmistrz
» 2015-11-05 21:02:56
@Uiskam
Powinieneś rozróżniać operatory logiczne od binarnych...
Operatory logiczne traktują swoje operandy jako pojedyncze bity.
tzn. interpretują je jako fałsz lub prawdę(wszystko inne od zera).

Natomiast binarne wykonują równolegle
operację logiczną na kolejnych bitach.
Najłatwiej ukazać to pisemnie:

00110101
01110011 &
========
00110001

Każdy operator logiczny
ma swój odpowiednik binarny:
operator logiczny binarny
AND (i)&&&
OR (lub)|||
NOT (nie)!~
 
P-139681
« 1 »
  Strona 1 z 1