This is an old revision of the document!


Table of Contents

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.

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.

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.

#include <homelab/bit.h>
 
int main(void)
{
	unsigned char b = 0x00;
 
	bit_set(b, 2);
	bit_invert(b, 7);
}
en/software/homelab/library/bit.1265632464.txt.gz · Last modified: 2020/07/20 09:00 (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