bitwise NOT

Üdvözlöm, Ön a bitwise NOT szó jelentését keresi. A DICTIOUS-ban nem csak a bitwise NOT szó összes szótári jelentését megtalálod, hanem megismerheted az etimológiáját, a jellemzőit és azt is, hogyan kell a bitwise NOT szót egyes és többes számban mondani. Minden, amit a bitwise NOT szóról tudni kell, itt található. A bitwise NOT szó meghatározása segít abban, hogy pontosabban és helyesebben fogalmazz, amikor beszélsz vagy írsz. Abitwise NOT és más szavak definíciójának ismerete gazdagítja a szókincsedet, és több és jobb nyelvi forráshoz juttat.

Főnév

bitwise NOT (tsz. bitwise NOTs)

  1. (informatika) A bitwise NOT (~) egy unáris operátor, amely minden egyes bitet megfordít egy szám bináris ábrázolásában.

🔹 0 → 1 lesz
🔹 1 → 0 lesz

Ez a művelet úgy is ismert, mint bitenkénti negálás vagy bitenkénti komplementer.



Hogyan működik a bitwise NOT (~)?

A ~ operátor az összes bitet megfordítja.

Példa pozitív számmal (előjel nélküli unsigned int):

#include <iostream>

int main() {
    unsigned int a = 5;  // 00000101 binárisan
    unsigned int b = ~a; // Bitenkénti negálás

    std::cout << b << std::endl; 
    return 0;
}

Lépésenkénti lebontás:

  00000101  (5 decimálisan)
~ 11111010  (250 decimálisan, ha 8 bites rendszerben nézzük)

Mivel az unsigned int nem használ előjelet, az eredmény egy pozitív szám lesz.



Figyelem: Kétkomplementes ábrázolás és előjeles számok (signed int)

A C++ előjeles egész számokat kétkomplementes ábrázolásban tárolja, ami azt jelenti, hogy a ~ operátor az előjeles számokat negatívvá teszi.

Példa előjeles számmal (signed int):

#include <iostream>

int main() {
    int a = 5;  // 00000101 binárisan (32 biten: 00000000 00000000 00000000 00000101)
    int b = ~a; // Bitenkénti negálás

    std::cout << b << std::endl; 
    return 0;
}

Lépésenkénti lebontás (32 biten):

  00000000 00000000 00000000 00000101  (5 decimálisan)
~ 11111111 11111111 11111111 11111010  (-6 decimálisan kétkomplementes formában)

📌 Fontos!
Az eredmény nem -5, hanem -6, mert a kétkomplementes ábrázolás miatt ~x ugyanaz, mint -(x+1).

Matematikailag:

~x = - (x + 1)

🔹 Példák: | Szám (x) | Binárisan (8 bit) | ~x binárisan | Eredmény (~x decimálisan) | |————|——————–|—————-|—————————–| | 5 | 00000101 | 11111010 | -6 | | 0 | 00000000 | 11111111 | -1 | | -5 | 11111011 | 00000100 | 4 |



Hol használjuk a bitwise NOT operátort?

1️⃣ Gyors előjeles szám váltás (-(x+1))

Ha szeretnénk gyorsan egy szám negált verzióját előállítani:

int x = 5;
int y = ~x; // Eredmény: -6

2️⃣ Bitmask készítése

Ha egy bitmaskot szeretnénk egy adott méretben létrehozni:

int mask = ~0; // Minden bit 1 lesz (0xFFFFFFFF)

3️⃣ Gyors bináris műveletek

Például egy logikai negálás (NOT) helyett:

bool flag = true;
bool invertedFlag = !flag; // Hagyományos negálás (jobb olvashatóság miatt ajánlott)
int bitwiseInvertedFlag = ~flag; // Bitwise NOT (bitenként)

Összegzés

  • A ~ operátor minden bitet megfordít.
  • Előjel nélküli (unsigned int) számoknál az összes bit 1-ről 0-ra és fordítva változik.
  • Előjeles (signed int) számoknál a kétkomplementes ábrázolás miatt az eredmény -(x+1).
  • Hasznos bitmaskokhoz, logikai műveletekhez, és gyors számításokhoz.

🔥 Ha előjeles számokon dolgozol, mindig számolj a kétkomplementes ábrázolás hatásaival! 🚀