This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| ru:software:homelab:library:bit [2013/08/12 10:41] – создано eduardtlmk | ru: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 ===== | ||
| - | |||
| - | * **// | ||
| - | Bitiindeksi teisendamine bitimaskiks. Parameetrid: | ||
| - | * //bit// - Bitiindeks. | ||
| - | * Tagastab bitimaski. | ||
| - | |||
| - | * **// | ||
| - | Muutujas kindla biti kõrgeks seadmine. Parameetrid: | ||
| - | * //value// - Muutuja. | ||
| - | * //bit// - Bitiindeks. | ||
| - | |||
| - | * **// | ||
| - | Muutujas kindla biti madalaks seadmine. Parameetrid: | ||
| - | * //value// - Muutuja. | ||
| - | * //bit// - Bitiindeks. | ||
| - | |||
| - | * **// | ||
| - | Muutujas kindla biti soovitud olekusse seadmine. Parameetrid: | ||
| - | * //value// - Muutuja. | ||
| - | * //bit// - Bitiindeks. | ||
| - | * //state// - Tõeväärtus (//true// või //false//). | ||
| - | |||
| - | * **// | ||
| - | Muutujas kindla biti oleku ümberpööramine (madal kõrgeks ja vastupidi). Parameetrid: | ||
| - | * //value// - Muutuja. | ||
| - | * //bit// - Bitiindeks. | ||
| - | |||
| - | * **// | ||
| - | 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. | ||
| - | |||
| - | * **// | ||
| - | 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 < | ||
| - | |||
| - | int main(void) | ||
| - | { | ||
| - | unsigned char b = 0x00; | ||
| - | |||
| - | bit_set(b, 2); | ||
| - | bit_invert(b, | ||
| - | } | ||
| - | </ | ||
| - | |||
| - | ===== 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) | ||
| - | #define bit_set(value, | ||
| - | #define bit_clear(value, | ||
| - | #define bit_invert(value, | ||
| - | #define bit_is_set(value, | ||
| - | #define bit_is_clear(value, | ||
| - | #define bit_set_to(v, | ||
| - | |||
| - | // | ||
| - | // Funktsioonid bitimaskidega tegelemiseks | ||
| - | // | ||
| - | #define bitmask_set(value, | ||
| - | #define bitmask_clear(value, | ||
| - | #define bitmask_invert(value, | ||
| - | #define bitmask_set_to(v, | ||
| - | #define bitmask_is_set(value, | ||
| - | </ | ||