Skocz do zawartości

Operatory binarne


Erbit

Rekomendowane odpowiedzi

Ten sam skrypt zawierający operacje binarne, na dwóch serwerach daje różne wyniki.

Doszedłem do momentu gdzie to się dzieje:

$a = $a^$b;

ciekawostką jest to, że jeżeli uzupełnię skrypt o:

$a = $a .''; # pusty ciąg zniaków
$a = $a^$b;

to w tej sytuacji wyniki są już identyczne ale nadal błędne !

Jedyna różnica (jak twierdzi hosting) to marka procesora.

Czy ktoś spotkał się z podobnym problemem !?

Odnośnik do komentarza
Udostępnij na innych stronach

  • Odpowiedzi 38
  • Dodano
  • Ostatniej odpowiedzi

Erbit, podaj wersje PHP i jakies przykladowe dane. Moze tu chodzi o kolejnosc dzialan?

Oficjalna strona serii Football Manager ( FM 2005, FM 2006 ) - CM Revolution

Forza MLKS Woźniki Śląskie!

Odnośnik do komentarza
Udostępnij na innych stronach

...chsum dla PR...

To jest dokładnie ten problem. Występuje on na s5 i365.pl a nie występuje na s2 i365.pl

... także co chcesz uzyskać

$a XOR $b

To włanie chcę uzyskać... i wiem, że to banalne ale nie działa.

...wersje PHP...

jakie by nie były te wersje to:

Jedyna różnica... to marka procesora.

Odnośnik do komentarza
Udostępnij na innych stronach

Jednak chciałbym zobaczyć większy fragment kodu, być może przy zapisywaniu zmiennej występuje jakiś problem. Pamiętaj, że to operacje bitowe i jeden bit powoduje, że działanie daje zupełnie inny wynik.

Dała matka rozum? To kombinuj.

Odnośnik do komentarza
Udostępnij na innych stronach

Hellz - prawdopodobnie przyczyną jest interpretacja typu zmiennej. W pierwszym przykładzie popatrz na absurdalby zapis, który powoduje, że wynik się zmienia.

To może na około?;)

Operacja jest wykonywana na wszystkich bitach obu zmiennych a nie na jednym.
Odnośnik do komentarza
Udostępnij na innych stronach

może problem z interpretacją ciągów tekstowych. PHP daje dużą swobodę w definicji rozdaju zmiennej (w zasadzie nawet po za tablicami nie definiujemy tego) (kto pamięta Turbo Pascala i dokładne rodzjae zmiennych integer, string itp ?). NIe znam całego kodu, ale być może któreś dane są pobierane z zewnąrz i dopóki nie wykonasz na nich operacji matematycznej traktowane są jako ciąg tekstowy a co za tym idzie na ich zawartość może mić wpływ więcej czyników niż się wydaje. Łacznie z ustawieniami Apach(a jakże), kodowaniem znaków w pliku PHP itp... sprawdż to wszystko, ew użyj czegoś co zmienną w 100% uczyni jednoznacznie taką samą, Ja kiedyś robiłem karygodny zabieg eby upenić się, że cyfra to cyfra $a=$a-1; $a=$a+1 (włąsnie tak nie $a++), ale on tutaj się nie nadaje - po za tym znasz się bardziej na tym odemnie więc moja uwaga to tylko taka - sprawdż czy nie wystepują różniece w momencie kiedy zmienna być może jest ciągiem tekstowym.

Odnośnik do komentarza
Udostępnij na innych stronach

...kto pamięta Turbo Pascala i dokładne rodzjae zmiennych integer, string itp...

Ja pamiętam ;)

mrtn - dziękuję... sugerstie masz bardzo słuszne ale to już też sprawdzałem :)

ustalanie typu zmiennej, przetwarzanie, zmiana typu - to wszystko przeszedłem zanim napisałem topik... nadal nic.

Odnośnik do komentarza
Udostępnij na innych stronach

Zmienna $a przyjmuje zawsze wartość 1 lub 0

Już Tobie to wyjaśniłem. Rozpatrujesz to jako pojedynczy bit a w zmiennej jest duzo wiecej bitów. Musiałbym przekształcić wartość do zapisu binarnego, potem explode na pojedyncze bity abym mógł zastosować Twoją pomysł a następnie implode i ponowne przekształcenie w liczbę szesnastkową. Przy liczbach dziecięcioznakowych w systemie szesnastkowym - wiesz ile jest bitów !?

Odnośnik do komentarza
Udostępnij na innych stronach

stawiam na tolka banana... ee tzn na reprezentacje bitow little/big endian na rzonych procesorach (sparc/powerpc/x86)

wiecej z pierwszego linka z googla - wikipedia:

https://pl.wikipedia.org/wiki/Kolejno%C5%9B%C4%87_bajt%C3%B3w

rysunek, malarstwo, nauka rysunku, szkoła rysunku, kurs, architektura

usługi dla firm, doradztwo, uslugi doradcze, consulting, biznes

katalog stron WWW, Katalog stron, katalog SEO, linki bezpośrednie

Odnośnik do komentarza
Udostępnij na innych stronach

Dziwny jest ten świat.

Niedawno też miałem dziwny przypadek. Przy zapisie:

if ($a=='a') { }

(dwa znaki =) bez względu na wartość $a wykonywany był skrypt pomiędzy klamrami. Siedziałem przy tym chyba ze 2 godziny. Sprawdzałem plik w trzech edytorach.

Pomogło skasowanie linii i wpisanie jej w tej samej postaci od nowa. Domyślam się że wina była w błędnym zapisie pliku. Jednak w żadnym edytorze nie było widać tego błędu.

Nie znam się na pozycjonowaniu, ja tu tylko zużywam transfer i miejsce w sql.

Roman Kluska ujawnia: nadchodzi INFLACYJNY ARMAGEDON!

 

Wielki Elektronik

Odnośnik do komentarza
Udostępnij na innych stronach

Aż sobie to rozpisałem na kartce :P Czy wartości bitowe są zapisywane od prawej do lewej, czy od lewej do prawej, to nie powinno to mieć znaczenia dla tej operacji.

Erbit, piszesz, że wyniki są niepoprawne, ale jakie konkretnie, co uzyskujesz?

Dała matka rozum? To kombinuj.

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności