Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
et:software:homelab:library:bit [2010/02/11 14:30] toimetajaet:software:homelab:library:bit [2020/07/20 12:00] (current) – external edit 127.0.0.1
Line 1: Line 1:
 ====== Bitioperatsioonid ====== ====== Bitioperatsioonid ======
  
-Bitioperatsioonide teek on üldkasutatav makrofunktsioonide kogum tüüpiliste bititehete teostamiseks. Seda kasutavad kõik teised teegid, kuid seda võib kasutada ükskõik milliste registrite või andmete puhul, sest makrofunktsioonidel pole kindlat andmetüüpi. Funktsioonid sobivad nii 8-, 16- kui ka 32-bitiste muutujate ning registrite jaoks.+Bitioperatsioonide teek on üldkasutatav makrofunktsioonide kogum tüüpiliste bititehete teostamiseks. Neid funktsioone võib kasutada ükskõik milliste registrite või andmetüüpide puhul, sest makrofunktsioonidel pole kindlat andmetüüpi. Funktsioonid sobivad nii 8-, 16- kui ka 32-bitiste muutujate ning registrite jaoks. Neid bitioperatsioone kasutavad kõik teised teegi osad, seepärast on lähtekoodi alampeatükis funktsioonid ka välja kirjutatud.
  
 Bitiindeksiks loetakse biti järjekorranumbrit, alustades kõige vähemtähtsast (inglise keeles //least significant bit//, lühend LSB). Loendamine algab nullist. 8-bitiste arvude puhul on bitiindeksi väärtus 0-7, 16-bitiste puhul 0-15 ja 32-bitiste puhul 0-31. Bitiindeksiks loetakse biti järjekorranumbrit, alustades kõige vähemtähtsast (inglise keeles //least significant bit//, lühend LSB). Loendamine algab nullist. 8-bitiste arvude puhul on bitiindeksi väärtus 0-7, 16-bitiste puhul 0-15 ja 32-bitiste puhul 0-31.
Line 66: Line 66:
  
 <code c> <code c>
 +//
 +// Funktsioonid bittidega tegelemiseks
 +//
 #define bit_mask(bit)            (1 << (bit)) #define bit_mask(bit)            (1 << (bit))
 #define bit_set(value, bit)      value |= bit_mask(bit) #define bit_set(value, bit)      value |= bit_mask(bit)
Line 73: Line 76:
 #define bit_is_clear(value, bit) (!((value) & (bit_mask(bit)))) #define bit_is_clear(value, bit) (!((value) & (bit_mask(bit))))
 #define bit_set_to(v, b, x) v = ((x) ? (v | bit_mask(b)) : (v & ~bit_mask(b))) #define bit_set_to(v, b, x) v = ((x) ? (v | bit_mask(b)) : (v & ~bit_mask(b)))
 +
 +//
 +// Funktsioonid bitimaskidega tegelemiseks
 +//
 +#define bitmask_set(value, bitMask)     value |= (bitMask)
 +#define bitmask_clear(value, bitMask)   value &= ~(bitMask)
 +#define bitmask_invert(value, bitMask)  value ^= (bitMask)
 +#define bitmask_set_to(v, m, x)         v = ((x) ? (v | (m)) : (v & ~(m))) 
 +#define bitmask_is_set(value, bitMask)  ((value) & (bitMask))
 </code> </code>
  
et/software/homelab/library/bit.1265891447.txt.gz · Last modified: (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0