Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Bity, różne wyniki przy zmianie kolejności operatorów.
Forum PHP.pl > Forum > Przedszkole
KsaR
Zadłem na so* pytanie czy można grupować operację na 1 kolumnie w MySQL:
http://stackoverflow.com/questions/3592978...s-in-one-column
Odpowiedź była że można:
  1. UPDATE user
  2. SET settings = settings|1&~2|4;


Problem:
Zauważyłem że kolejność tych operacji daję różne wyniki:
https://eval.in/622933

  1. $bits&~1|2&~4; // daję 30
  2. $bits2&~1&~4|2; // daję 26

Tu akurat w PHP ale w MySQL to samo...
Dodam że ta druga opcja zdaję się być poprawniejsza co do wyniku.

Może ktoś wytłumaczyć skąd ta różnica?
Ps. Na bitach się nie znam dlatego też zadałem pytanie co do grupowania.
trueblue
Z tego samego powodu co 3*1+2 != 3*2+1.
KsaR
Ok już trochę jaśniej, czyli ta druga opcja poprawna?
Wczoraj już szukałem coś o kolejności tych operatorów ale nie mogłem znaleźć.
trueblue
Obydwie są poprawne.
Tak jak działania na liczbach dziesiętnych, które podałem.

Wyjątkiem kiedy kolejność operacji bitowych nie ma znaczenia są tylko operacje AND, tylko OR, lub tylko NOT.
Np. 1 | 2 | 6 będzie tożsame z 1 | 6 | 2.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.