bitenkénti műveletek

Előadás 8. bitenkénti művelet

Az információ a számítógép binárisan (jelenlétében vagy távollétében feszültség). A minimális információs egysége a bit - nulla vagy egy, a hazugság, vagy az igazság, „nem” vagy „igen”. Minden byte 8 bitből. Ha a szám egy pont (aláírt), a bal szélső bit képviseli jele annak szám - szám 0 pozitív és 1 negatív számok száma, a fennmaradó biteket egy egységet képez (ez csak az egész számok, valós számok mindig jel). Ha a szám előjel nélküli (unsigned), akkor az összes bit részt vesz a kialakulását az értékek, de ez a szám csak pozitív.

Pozitív egész képviselteti magát a számítógépet a normál kód - ez egy közös képviselete a bináris rendszerben, és negatív - a kiegészítő kódot. További kódot vesszük egyenlő a bináris ábrázolása a modulus értéke, akkor az összes számjegyet a bináris ábrázolás invertált (0 megy 1, 1 - 0), ez adja az úgynevezett inverz kódot, amelyhez 1 adunk hozzá, hogy kiegészítő kódot. Példának okáért a kódja 207 lépésben 2 byte - 0000000011001111 és kiegészítő érték -207 - 1111111100110001 (a számjegyek száma a számos jelentős!). Amikor hajtogatott, a két szám, 0 kapunk (transfer 1 az MSB szám). Ezen kívül modulo különböző pozitív és negatív számokat kapott kódszámot a normális, ha az eredmény nagyobb, mint 0, és a számos kiegészítő kód, ha az eredmény kevesebb, mint 0.

Vannak olyan műveletek, amelyek működnek a biteket - akkor egy tagadás, alkalmazza a működés „és” vagy „vagy”. Bitenkénti műveletek alkalmazott transzferek és szerves típusok - int. char. rövid. int és a hosszú (esetleg módosító előjel nélküli). Azonban, ha nem alkalmazzák ezeket a műveleteket egy kicsit, de csak akkor tudjuk használni egy és ugyanazt a műveletet az összes bit a változó.

„És” „Vagy:” | „kizáró vagy” ^

int BitCount (int x)

előjel nélküli maszk = 0x80000000; A (c = 0; X = 0 ;! X <<= 1) if (x & mask) c++; return c;>

// maszk - a segédváltozóba, amelyen keresztül egy bit között osztják annak a ténynek köszönhetően, hogy a // összes bitet kivéve a bal következő műveletek végrehajtására egyenlő lesz 0, // és a bal szélső bit változatlan marad. // A változót inicializálunk egy hexadecimális állandó 0x80000000, // amelyben minden bit, kivéve a bal értéke 0.

2. példa A függvény beállítja egy előre meghatározott bit a 0

int ClearBit (int x, int pos)

(maszk <

3. példa A függvény beállítja egy előre meghatározott bit 1

4. példa Az bitenkénti műveletek dolgozni attribútumok

R;> void main ()

Kapcsolódó cikkek