ACSUtils Wiki

An ACS library for ZDoom-based ports

User Tools

Site Tools


This is an old revision of the document!

Bit functions

These functions are for bit math.

Powers of two

  • int npo2(int x) – returns the lowest power of 2 greater or equal to X.
  • int bitlog2(int x) – returns the index of the highest used bit, aka integer binary logarithm. Useful to convert flags like 1«8 = 256 back into 8.

Working with bit arrays

These functions allow you to work with variables as if they were arrays of bits:

  • bool getbit(int a, int i) – returns bit a[i].
  • int setbit(int a, int i) – performs a[i] = 1 and returns the result.
  • int clrbit(int a, int i) – performs a[i] = 0 and returns the result.
  • int tglbit(int a, int i) – performs a[i] = !a[i] and returns the result.

Unsetting bit flags

void notflag(int flags, int flag)

Bit flags can be applied using flags & SOMEFLAG. But removing them requires a more complicated expression !(flags & SOMEFLAG).

notflag(flags, SOMEFLAG) unsets SOMEFLAG, shorthand for !(flags & SOMEFLAG).

new/bits.1519036113.txt.gz · Last modified: 2018/02/19 12:28 by korshun