Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: operator bitowy NOT ~2 == -3
Forum PHP.pl > Forum > PHP
3.grosz
  1. <?php
  2. //binary NOT
  3. $dwa = 2;
  4. echo ~$dwa; //-3
  5. ?>


Zapoznałem się z zapisem znak-moduł oraz z kodem uzupełnień do jedynki i dwójki. Próbuję zrozumieć co dzieje się w gdy wywołuję powyższy skrypt. Jeśli więc binarne 2 to 00000010, to po negacji przybiera postać 11111101, zgodnie z U1. Tylko skąd PHP wie, że liczba 11111101, to -3, a nie 253.
Proszę o sugestię.
Jabol
http://pl.wikipedia.org/wiki/Kod_uzupełnień_do_dwóch

Ach widzę, że już się z tym zapoznałeś.

int to domyślnie int ze znakiem. A liczba całkowita ze znakiem jest reprezentowana właśnie w tym zapisie binarnym, conajmniej na większości nowoczesnych komputerów.
3.grosz
Cytat(Jabol @ 7.01.2010, 20:32:08 ) *
int to domyślnie int ze znakiem. A liczba całkowita ze znakiem jest reprezentowana właśnie w tym zapisie binarnym, conajmniej na większości nowoczesnych komputerów.


dzięki, pomogło.
thek
Upraszczając do jednego zdania:
W systemie notacji U2 najstarszy bit (najbardziej po lewej) określa znak. 0 to liczba dodatnia, a 1 to ujemna. Sprawdź to zresztą sobie sam jako zadanie domowe winksmiley.jpg
Zgodnie z wzorem dla 8-bitów zakres U2 jest od -128 do 127, więc wspomniane przez Ciebie 253 nawet nie ma jak wystąpić smile.gif
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.