aboutsummaryrefslogtreecommitdiff
path: root/2025-linuxdays/bits.c
diff options
context:
space:
mode:
Diffstat (limited to '2025-linuxdays/bits.c')
-rw-r--r--2025-linuxdays/bits.c20
1 files changed, 20 insertions, 0 deletions
diff --git a/2025-linuxdays/bits.c b/2025-linuxdays/bits.c
new file mode 100644
index 0000000..f16b232
--- /dev/null
+++ b/2025-linuxdays/bits.c
@@ -0,0 +1,20 @@
+#include <assert.h>
+#include <stdbit.h>
+
+int main(int argc, char *argv[]) {
+ assert(stdc_leading_zeros(0xffU) == 24);
+ assert(stdc_leading_ones(0xff000000U) == 8);
+ assert(stdc_trailing_zeros(0xff000000U) == 24);
+ assert(stdc_trailing_ones(0xffU) == 8);
+ assert(stdc_first_leading_zero(0xff000000U) == 9);
+ assert(stdc_first_leading_one(0xffU) == 25);
+ assert(stdc_first_trailing_zero(0xffU) == 9);
+ assert(stdc_first_trailing_one(0xff000000U) == 25);
+ assert(stdc_count_zeros(0xffU) == 24);
+ assert(stdc_count_ones(0xffU) == 8);
+ assert(stdc_has_single_bit(1U << 13));
+ assert(stdc_bit_width(0xf0U) == 8);
+ assert(stdc_bit_floor(0xf1U) == 0x80);
+ assert(stdc_bit_ceil(0xf1U) == 0x100);
+ return 0;
+}