![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 27.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Witajcie.
Mam interesujący problem. Stwierdziłem po prostu że sie tego nie da, więc jeśli się komuś uda zxnaleźć rozwiązanie to będę wdzięczny i chylę czoła. Otóż problem wygląda tak: Z pliku wczytuje dane do tablicy za pomocą FILE. Tamte dane są to funkcje boolowskie, które wyglądają np. tak: ~a&~b . Przerabiam to później w ereg_replace (gdyż pod różne zmienne podstawiam ciągle różne wartości - 1 lub 0). Noi gdzie jest problem... otóż tu, że to jest traktowany jako string i w żaden sposób nie moge zmusić php do policzenia wartości logicznej funkcji boolowskiej w stringu. Oczywiście jak wpisze z palca do skryptu owe funkcje to działają, ale po przerobieniu ze stringa nie da rady. Jeżeli ktoś pomoże, będę wdzięczny... Pozdrawiam Ten post edytował leClerCk 28.11.2006, 08:17:05 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 675 Pomógł: 15 Dołączył: 7.11.2004 Skąd: Katowice Ostrzeżenie: (0%) ![]() ![]() |
@nospor rozwiązał Twój problem, ale gwoli wytłumaczenia, dlaczego się działo tak:
Jeśli daję zaprzeczenie binarnie: Operacja logicznego NOT, zapisywana jako $b = ~2, zmienia stan wszystkich bitów, ustawiając te bity w zmiennej $b, których odpowiedniki w wartości 2 są wyzerowane, wszystkie inne bity tej zmiennej są zerowane. Więc:~0 to w wyniku otrzymuję "-1", jeśli ~1 to w wyniku dostaję "-2". i int: 2, binarnie: 0000 0000 0000 0000 0000 0000 0000 0010, ~i: int: -3, binarnie: 1111 1111 1111 1111 1111 1111 1111 1101. No i kolejna sprawa, chyba również ciekawa. Za B. Eckelem, Thinking in JAVA: Cytat Typ logiczny jest traktowany jako jednobitowy... Można wykonać bitowe AND, OR i XOR, ale nie można wykonać bitowego NOT (przypuszczalnie dlatego, by uniemozliwić pomylenie z logicznym NOT) - o tym warto pamiętać.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.10.2025 - 02:54 |