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: 12. 1. 2023
Tyto funkce umožňují, aby se celá čísla manipulují jako bitové vzory představující dvě hodnoty-doplnění, kde bitová pozice N
má váhu 2**N
.
Bity jsou číslovány od 0 nahoru. Tyto operace se chovají, jako by se bit znaménka celého čísla v levé části rozšířil na neurčito. Tedy, všude nad svým nejvýznamnějším bitem, má kladné celé číslo 0 bitů a záporné celé číslo má 1 bit.
Funkce | Výsledek | Popis |
---|---|---|
~~ INT1 |
Celé číslo | Vytvoří bitový komplement celého čísla INT1. To znamená, že pro každou bitovou pozici, pro kterou má parametr INT1 hodnotu 0, je ve výsledku jedna hodnota 1. Vždy je pravda, že ~~ INT =
–(INT + 1) . |
INT1 || INT2 |
Celé číslo | Výsledek této operace je bitový "all inclusive nebo" z INT1 a INT2). To znamená, že ve výsledku je jeden výsledek za každou bitovou pozici, pro kterou existuje 1 buď INT1 , nebo INT2 , nebo obojí. |
INT1 ||/& INT2 |
Celé číslo | Výsledek této operace je bitové "výlučné nebo" z INT1 a INT2. To znamená, že ve výsledku je 1 výsledek pro každou bitovou pozici, pro kterou existuje 1 v INT1 nebo INT2 , ale ne v obou. |
INT1 && INT2 |
Celé číslo | Vytvoří bitové znaky "and" pro celá čísla INT1 a INT2. To znamená, že ve výsledku je pro každou bitovou pozici 1, pro kterou existuje 1, v obou INT1 a INT2. |
INT1 &&~~ INT2 |
Celé číslo | Vytvoří bitové znaky "a" z INT1 a bitové komplement INT2. To znamená, že pro každou bitovou pozici s hodnotou 1 v INT1 a 0 v INT2je 1 ve výsledku. To je stejné jako INT1 && (~~INT2) a je užitečné pro vyčištění bitů INT1 nastavené v INT2. |
INT << N |
Celé číslo | Produkuje bitový vzorek INT1 posunutý doleva o N pozic. Záporná hodnota pro N vytvoří pravou směnu. |
INT >> N |
Celé číslo | Produkuje bitový vzorek INT1 posunutý zprava o N pozic. Záporná hodnota pro N vytvoří levou směnu. |
INT1 &&=_0 INT2 |
Logická hodnota | Ekvivalentní s logickým výrazem INT1 && INT2 /== 0 , ale je efektivnější. |
INT1 &&/=_0 INT2 |
Logická hodnota | Ekvivalentní s logickým výrazem INT1 && INT2 == 0 , ale je efektivnější. |
integer_bitcount(INT) |
Celé číslo | Počítá počet 1 nebo 0 bitů ve dvou-komplementové reprezentaci INT. Je-li hodnota INT nezáporná, hodnota N je číslo 1 bitů. Je-li hodnota INT záporná, je to číslo 0 bitů. Vzhledem k rozšíření znaménka, existuje nekonečný počet 0 bitů v nezáporné celé číslo nebo 1 bity v záporném integer. Vždy se jedná o případ, který integer_bitcount(INT) = integer_bitcount(-(INT+1)) . |
integer_leastbit(INT) |
Celé číslo | Vrátí bitovou pozici N z nejméně významné bitové sady v celočíselném INT. N je nejvyšší mocnost 2, kterou se INT rozděluje přesně. |
integer_length(INT) |
Celé číslo | Vrátí délku (v bitech) INT jako celé číslo komplementu. To znamená, že N je nejmenší celé číslo takové, že INT < (1 << N) if INT >= 0 INT >= (–1 <<
N) if INT < 0 . Je-li hodnota INT nezáporná, pak znázornění hodnoty INT jako celé číslo bez znaménka vyžaduje pole alespoň N bitů. Případně je vyžadováno minimum N+1 bitů, které představuje INT jako podepsané celé číslo bez ohledu na jeho znaménko. |
testbit(INT, N) |
Logická hodnota | Testuje bit na pozici N v celočíselném INT a vrací stav bitu N jako logickou hodnotu (Boolean), která má hodnotu true pro hodnotu 1 a false pro 0. |