Differences

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

Link to this comparison view

Next revision
Previous revision
ru:software:homelab:library:bit [2013/08/12 10:41] – создано eduardtlmkru:software:homelab:library:bit [Unknown date] (current) – removed - external edit (Unknown date) 127.0.0.1
Line 1: Line 1:
-====== Битовые операции ====== 
- 
-Библиотека битовых операций – это набор общепринятых макрофункций для совершения  
- 
-типичных битовых действий. Эти функции могут быть использованы в любых регистрах и  
- 
-типах данных, так как у макрофункций нет конкретного типа данных. Функции подходят  
- 
-8-, 16- и 32-битным переменным и регистрам. Эти битовые операции используются всеми  
- 
-другими частями библиотеки, поэтому функции выписаны в главе исходного кода. 
- 
-Битовым индексом считается порядковый номер бита, начиная с наименее важного (англ.  
- 
-least significant bit, сокращённо LSB). Подсчёт начинается с нуля. Значение битового индекса  
- 
-у 8-битного числа 0-7, у 16-бинтого - 0-15 и 32-битного 0-31. 
- 
-===== Funktsioonid ===== 
- 
-  * **//bit_mask(bit)//** \\ 
-    Bitiindeksi teisendamine bitimaskiks. Parameetrid: 
-    * //bit// - Bitiindeks. 
-    * Tagastab bitimaski. 
- 
-  * **//bit_set(value, bit)//** \\ 
-    Muutujas kindla biti kõrgeks seadmine. Parameetrid: 
-    * //value// - Muutuja. 
-    * //bit// - Bitiindeks. 
- 
-  * **//bit_clear(value, bit)//** \\ 
-    Muutujas kindla biti madalaks seadmine. Parameetrid: 
-    * //value// - Muutuja. 
-    * //bit// - Bitiindeks. 
- 
-  * **//bit_set_to(value, bit, state)//** \\ 
-    Muutujas kindla biti soovitud olekusse seadmine. Parameetrid: 
-    * //value// - Muutuja. 
-    * //bit// - Bitiindeks. 
-    * //state// - Tõeväärtus (//true// või //false//). 
- 
-  * **//bit_invert(value, bit)//** \\ 
-    Muutujas kindla biti oleku ümberpööramine (madal kõrgeks ja vastupidi). Parameetrid: 
-    * //value// - Muutuja. 
-    * //bit// - Bitiindeks. 
- 
-  * **//bit_is_set(value, bit)//** \\ 
-    Väärtuse kindla biti kõrgeloleku kontroll. Parameetrid: 
-    * //value// - Muutuja. 
-    * //bit// - Bitiindeks. 
-    * Tagastab tõeväärtuse //true//, kui bitt on kõrge ja //false//, kui bitt on madal. 
- 
-  * **//bit_is_clear(value, bit)//** \\ 
-    Väärtuse kindla biti madaloleku kontroll. Parameetrid: 
-    * //value// - Muutuja. 
-    * //bit// - Bitiindeks. 
-    * Tagastab tõeväärtuse //true//, kui bitt on madal ja //false//, kui bitt on kõrge. 
- 
-===== Näide ===== 
- 
-Muutujas //b// kolmanda biti kõrgeks seadmine ja viimase ümberpööramine. 
- 
-<code c> 
-#include <homelab/bit.h> 
- 
-int main(void) 
-{ 
- unsigned char b = 0x00; 
- 
- bit_set(b, 2); 
- bit_invert(b, 7); 
-} 
-</code> 
- 
-===== Lähtekood ===== 
- 
-Järgnevalt on lühendatud kujul toodud teegi lähtekood, kust on näha, mis iga makrofunktsiooni taga peitub: 
- 
-<code c> 
-// 
-// Funktsioonid bittidega tegelemiseks 
-// 
-#define bit_mask(bit)            (1 << (bit)) 
-#define bit_set(value, bit)      value |= bit_mask(bit) 
-#define bit_clear(value, bit)    value &= ~bit_mask(bit) 
-#define bit_invert(value, bit)   value ^= bit_mask(bit) 
-#define bit_is_set(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))) 
- 
-// 
-// 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> 
  
ru/software/homelab/library/bit.1376293293.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