## Introduction

In addition to my bit testing functions in C, here are some bit constant macros in C. (These are used as part of **cdecl**.)

## The Macros

The first macro, given an integer having *exactly one* bit set, returns a value where all bits less than that are set, e.g., given `0b00010000`

, returns `0b00001111`

:

```
#define BITS_LT(N) ((N) - 1u)
```

Given that definition, a macro that returns a value where all bits that are less than *or equal to* the one set bit is:

```
#define BITS_LE(N) (BITS_LT(N) | (N))
```

Finally, the greater-than counterparts are trivially:

```
#define BITS_GT(N) (~BITS_LE(N))
#define BITS_GE(N) (~BITS_LT(N))
```

## Top comments (0)