Translation not up to date
The translation of this page does not represent the latest version. For the latest updates, see the English version of the documentation.
Last updated: 04 lip 2023
Te funkcje pozwalają na manipulowanie liczbami całkowitymi jako ciągami bitów
w kodzie uzupełnień do dwóch, gdzie pozycja bitu N
ma
wagę 2**N
.
Bity są numerowane od 0. Te operacje działają tak jakby bit znaku liczby całkowitej był rozszerzany w nieskończoność w lewą stronę. Więc wszędzie powyżej jego najbardziej znaczącego bitu dodatnia liczba całkowita ma 0 bitów, a ujemna liczba całkowita ma 1 bit.
funkcjonalność | Wynik | Opis |
---|---|---|
~~ INT1 |
Liczba całkowita | Tworzy bitowe dopełnienie liczby całkowitej LCAŁK1. Czyli wynik zawiera 1 na każdej pozycji bitowej, dla której LCAŁK1 ma
0. Zawsze jest to prawdą, że ~~ INT =
–(INT + 1) . |
INT1 || INT2 |
Liczba całkowita | Wynikiem tej operacji jest bitowe "inclusive or" z LCAŁK1 i LCAŁK2. Czyli wynik zawiera 1 na każdej pozycji bitowej, która zawiera 1 w LCAŁK1 lub LCAŁK2 lub w obydwu. |
INT1 ||/& INT2 |
Liczba całkowita | Wynikiem tej operacji jest bitowe "exclusive or" z LCAŁK1 i LCAŁK2. Czyli wynik zawiera 1 na każdej pozycji bitowej, która zawiera 1 w LCAŁK1 lub LCAŁK2, ale nie w obydwu. |
INT1 && INT2 |
Liczba całkowita | Wynikiem jest bitowe "and" liczb całkowitych LCAŁK1 i LCAŁK2. Czyli wynik zawiera 1 na każdej pozycji bitowej, na której 1 występuje i w LCAŁK1, i w LCAŁK2. |
INT1 &&~~ INT2 |
Liczba całkowita | Wynikiem jest bitowe "and" dla liczby LCAŁK1 oraz
bitowe dopełnienie LCAŁK2. Czyli wynik zawiera 1 na każdej pozycji bitowej, która
zawiera 1 w LCAŁK1 i 0 w LCAŁK2. Jest to równoważne INT1 && (~~INT2) i jest przydatne do czyszczenia bitów CAŁK1 ustawionych w CAŁK2. |
INT << N |
Liczba całkowita | Tworzy ciąg bitów LCAŁK1 przesunięty w lewo o N miejsc. Wartość ujemna N powoduje przesunięcie w prawo. |
INT >> N |
Liczba całkowita | Tworzy ciąg bitów LCAŁK1 przesunięty w prawo o N miejsc. Wartość ujemna N powoduje przesunięcie w lewo. |
INT1 &&=_0 INT2 |
Wartość boolowska | Odpowiednik wyrażenia boolowskiego INT1 && INT2 /== 0 , ale bardziej wydajny. |
INT1 &&/=_0 INT2 |
Wartość boolowska | Odpowiednik wyrażenia boolowskiego INT1 && INT2 == 0 , ale bardziej wydajny. |
integer_bitcount(INT) |
Liczba całkowita | Zlicza liczbę bitów 1 lub 0 w dopełnieniu do dwóch reprezentacji
LCAŁK. Jeśli wartość LCAŁK jest inna niż ujemna, N jest liczbą
bitów 1. Jeśli wartość LCAŁK jest ujemna, N jest liczbą bitów 0. Ze względu na rozszerzenie znaku istnieje nieskończona liczba bitów 0
w nieujemnej liczbie całkowitej lub bitów 1 w ujemnej liczbie całkowitej. Zawsze ma to miejsce, gdy integer_bitcount(INT) = integer_bitcount(-(INT+1)) . |
integer_leastbit(INT) |
Liczba całkowita | Zwraca pozycję bitu N najmniej znaczącego zbioru bitów w liczbie całkowitej LCAŁK. N jest to największa potęga 2, przez którą wartość LCAŁK dzieli się bez reszty. |
integer_length(INT) |
Liczba całkowita | Zwraca długość bitową LCAŁK jako liczbę całkowitą w kodzie uzupełnień do dwóch. Oznacza to, że N jest najmniejszą liczbą całkowitą spełniającą warunek INT < (1 << N) if INT >= 0 INT >= (–1 <<
N) if INT < 0 . Jeśli wartość LCAŁK jest nieujemna, reprezentacja
LCAŁK w postaci liczby całkowitej bez znaku wymaga zmiennej o długości co najmniej N bitów. Co najmniej N+1 bitów jest wymaganych w celu utworzenia reprezentacji LCAŁK jako
liczby całkowitej ze znakiem (bez względu na znak). |
testbit(INT, N) |
Wartość boolowska | Testuje bit w pozycji N w liczbie całkowitej LCAŁK i zwraca stan bitu N jako wartość logiczną, która ma wartość true dla 1 i false dla 0. |