2017-11-21 4 views
0

Kann mir jemand erklären, wie die Bit-Werte in den folgenden Code entschieden werden -verstehen müssen, wie die Bit-Werte sind unten in der Anwendung gewählt

{code} 
    //Each bit represents an application for paging. 

    typedef uint32_t PageOrig; 
    static const PageOrig pageNotInitiated_c = 0x0000; 
    static const PageOrig smSig_c = 0x0001; 
    static const PageOrig smData_c = 0x0002; 
    static const PageOrig nwkInitDetach_c = 0x0004; 
    static const PageOrig cancelLoc_c = 0x0008; 
    static const PageOrig lcsSig_c = 0x0010; 
    static const PageOrig gmmInfo_c = 0x0020; 
    static const PageOrig msInfo_c = 0x0040; 
    static const PageOrig oneXRtt_c = 0x0080; 
    static const PageOrig sgsapCs_c = 0x0100; 
    static const PageOrig sgsapPs_c = 0x0200; 
    static const PageOrig subsOffload_c = 0x0400; 
    static const PageOrig ehrpd_c = 0x0800; 
    static const PageOrig smSgsCs_c = 0x1000; 
    static const PageOrig smSgsPs_c = 0x2000; 
    static const PageOrig onDemandPaging_c = 0x4000; 
    static const PageOrig slnPaging_c = 0x8000; 
    static const PageOrig smNpli_c = 0x10000; 
    static const PageOrig smsSgd_c = 0x20000; 
    {code} 

Dies als Indikator verwendet wird, um verschiedene Aktionen

zu nehmen

Antwort

0

In Ihrem Beispiel hat jede Konstante den Typ "vorzeichenlose Ganzzahl mit 32 Bit" (oder 4 Byte). Jede Konstante repräsentiert etwas wie einen Zustand oder einen "Schalter", der anzeigt, ob eine Eigenschaft gesetzt ist oder nicht. Der Schalter befindet sich auf, WHE das Bit 1.

Zum Beispiel ist:

pageNotInitiated_c 00000000 00000000 00000000 00000000 

smData_c   00000000 00000000 00000000 00000010 
msInfo_c   00000000 00000000 00000000 01000000 
smNpli_c   00000000 00000001 00000000 00000000 

Wenn Sie zuordnen möchten („einschalten“) die Zustände smData_c, smInfo_c und smNpli_c-pageState Sie dies tun:

| bedeutet bitweise Or.
Das Ergebnis ist 00000000 00000001 00000000 01000010.

Wenn Sie testen möchten, ob pageState einen bestimmten Schalter hat oder Eigenschaft on, tun Sie dies:

if (pageState && smData_c && smInfo_c && smNpli_c) 
    { ... } 

&& logische And bedeutet. Diese if-Anweisung testet, ob pageState die Bits smData_c und smInfo_c und smNpli_c enthält. pageState kann auch andere Bits/Schalter enthalten, die in diesem Moment "an" sind.

Verwandte Themen