Bit működés c # (1. rész)
A bit műveletek C # (1. rész)
bitműveletek
Ebben a cikkben, azt fogja mondani, és azt mutatják, a gyakorlatban hogyan és mikor kell használni bit műveletek programok írt C #. Tény, hogy a dolgozó logikai műveletek tudható be az alacsony szintű munkát, és a C # programozók ritkán tapasztalt ilyen igény. De tényleg, a legtöbb problémát meg lehet oldani sokkal elegánsabb módon, de vannak esetek, amikor a használata kicsit műveletek szükséges.
Például a praxisomban, szemben azzal, hogy ellenőrzi az állapotát a kérelmet. Képzeljük csak el, hogy van egy bizonyos rendszer, amely nyolc egység, és van, hogy folyamatosan figyelemmel kíséri a rendszer állapotát. Még így is, a rendszer rendszeresen küld a kommunikációs felület a „külvilággal” információt az állapotuk, és akkor csatlakozik és e felületen keresztül dolgozza fel az adatokat. Tehát, a rendszer elküldi az állam minden egyes blokk, az állapota a blokk lehet kifejezni két érték: a berendezés működik, és a készülék nem működik. És az információ nem kerül továbbításra külön minden egyes blokk (logikai IGEN / NEM, kifejező blokk állapotban), és minden blokkot egyszerre, egyetlen byte (nyolc bites szám), ahol minden bit korrelál az állam egy adott blokk.
Byte számok (beleértve a bináris, azaz bit) általában számozott kezdve a legkisebb szignifikáns (jobb szélső szokásos felvétel). Ezzel LSB döntött, hogy a „0” számot, a következő lesz az „1”, akkor ez lesz a „2”, stb Itt látható egy példa a szám kettes számrendszerbeli: 01101111, ahol az MSB (bit №7) „0”, és a legkisebb helyértékű (bit №0) „1”.
Tegyük fel, hogy a legkisebb helyi értékű bit megfelel az állam az első blokk ( „0” vagy blokk-index), és a magas - egy nyolcadik blokk (vagy blokkolja a „7” index). Aztán, ha a legkisebb helyiértékű (jobb a szokásos írásban számok) beállítása „1”, úgy véljük, hogy az első egység működik, és ha a bit visszaáll „0”, akkor azt feltételezzük, hogy a készülék nem működik. Így, ha a rendszer úgy dönt, hogy azt mondják, hogy ők dolgoznak az összes blokkot, kivéve a második és a negyedik, akkor küldjön egy értéket 245 decimális vagy 11110101 - bináris.
Tehát ezt a számot kapunk, de azt is meg kell elemezni és segíts nekünk kicsit műveleteket. Ebben az esetben, hogy elnyerheti egy adott blokk, meg kell „olvasni” egy bizonyos kategóriába, azaz megtanulják az érték egy adott bit (ami a korai, „a” vagy „1”). Ezt a feladatot a bitenkénti „és” (C # jelöljük „”), alkalmazásával a bit maszk a vett szám: [kapott számítási] [Bitmaszk]. Bitmaszkként - ez is valamilyen számot, hogy úgy döntünk egy bizonyos módon. És ez meg fogja érteni, hogyan kell kiválasztani a kicsit maszk, meg kell értenünk, hogy a bitenkénti „ÉS”. És a következőképpen működik, összehasonlítja a megfelelő biteket két szám (azaz nulla bit összehasonlítjuk egy másik nulla bit, az első - az első, a második - egy második), és az eredmény a bitenkénti képződött, mint a harmadik szám. Továbbá, ha a megfelelő bit az első szám „1”, és a megfelelő bit a második szám egyenlő „1”, és az így kapott, beleértve a megfelelő bit egyenlő „1”, és minden más esetben, az eredmény az lesz „0”. És így túljut minden bit a számokról és az eredmény képződik.
Például, alkalmazása a maszkot a szám 110000011 11110011, azaz (11110011 110000011) eredményez 11.000.011.
Tehát hogyan tudod a helyes érték számunkra egy kicsit? Igen könnyen, akkor létre kell hozni egy kicsit maszkot úgy, hogy a megfelelő sorrendben a bitek (például a legfiatalabb) volt egyenlő „1”, és az összes többi maszk bit egyenlő „0”. Ezt követően meg kell előírni egy maszkot száma keresztül a művelet „” és ha az eredmény „0”, az eredeti szám, az érdekelt bit „0”, ellenkező esetben (ha az eredmény nem nulla) bit beállítása " 1. "
Ezen ismeretek felhasználásával írjunk az osztály, amelynek tárgyak tárolására a számot kapott a külső rendszer és igény (kezelték, hogy a kívánt tulajdonság), vissza a helyzetét a blokk, mint olyan igaz / hamis logikai értéket. Ez az osztály is valahogy így néz ki:
Record típusú 0x01 azt jelenti, hogy rámutatott egy számot hexadecimális. Ha azt akarjuk, hogy az értéket egy számot hexadecimális formában, hozzá kell adnunk az előtag «0x» szám előtt (ugyanúgy, megadhatja vezető nullák).
Most, ha létrehozunk egy osztályt «StateController» objektum számát a rendszertől kapott, például legyen több 26 (decimális), akkor hívja a tulajdon «Unit1State», azt látjuk, hogy az első készülék nem működik:
Ebben a cikkben, én arról beszéltek, hogy megkapjuk az értékeket a meghatározott számú bit! A következő cikkben, én továbbra is beszélni a bit műveletek C # (megvitatják beállítási értékeit bizonyos biteket a szám).