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