13365

67 分钟

#C 语言标准库头文件 stdbit.h

这个头文件提供 位操作 的相关功能。例如处理 C 对象的字节序等。

#示例

#include <stdio.h> #include <stdbit.h> int main(void) { unsigned int x = 0x0F0F; // 0000111100001111 printf("开头的 0 的位数: %u\n", stdc_leading_zeros(x)); printf("结尾的 1 的位数: %u\n", stdc_trailing_ones(x)); printf("1 的总位数: %u\n", stdc_count_ones(x)); printf("最小位宽度: %u\n", stdc_bit_width(x)); if (__STDC_ENDIAN_NATIVE__ == __STDC_ENDIAN_LITTLE__) { printf("系统原生字节序为:小端\n"); } else if (__STDC_ENDIAN_NATIVE__ == __STDC_ENDIAN_BIG__) { printf("系统原生字节序为:大端\n"); } else { printf("系统原生字节序为:未知\n"); } return 0; }

运行结果:

开头的 0 的位数: 20
结尾的 1 的位数: 4
1 的总位数: 8
最小位宽度: 12
系统原生字节序为:小端

#

标准说明
__STDC_ENDIAN_LITTLE__C23小端字节序(低字节存储在低地址)
__STDC_ENDIAN_BIG__C23大端字节序(高字节存储在低地址)
__STDC_ENDIAN_NATIVE__C23原生字节序

#

函数标准说明
stdc_leading_zerosC23从最高有效位开始连续的 0 的位数
stdc_leading_onesC23从最高有效位开始连续的 1 的位数
stdc_trailing_zerosC23从最低有效位开始连续的 0 的位数
stdc_trailing_onesC23从最低有效位开始连续的 1 的位数
stdc_first_leading_zeroC23从最高有效位开始第一个 0 所在的位
stdc_first_leading_oneC23从最高有效位开始第一个 1 所在的位
stdc_first_trailing_zeroC23从最低有效位开始第一个 0 所在的位
stdc_first_trailing_oneC23从最低有效位开始第一个 1 所在的位
stdc_count_zerosC230 的总位数
stdc_count_onesC231 的总位数
stdc_has_single_bitC23是否只有一位是 1,即是否是 2 的整数次幂
stdc_bit_widthC23表示该值所需要的最少位数
stdc_bit_floorC23找出不大于给定值的 2 的最大整数次幂
stdc_bit_ceilC23找出不小于给定值的 2 的最小整数次幂

#函数

函数标准说明
stdc_leading_zeros_ucC23unsigned char 从最高有效位开始连续的 0 的位数
stdc_leading_zeros_usC23unsigned short 从最高有效位开始连续的 0 的位数
stdc_leading_zeros_uiC23unsigned int 从最高有效位开始连续的 0 的位数
stdc_leading_zeros_ulC23unsigned long 从最高有效位开始连续的 0 的位数
stdc_leading_zeros_ullC23unsigned long long 从最高有效位开始连续的 0 的位数
stdc_leading_ones_ucC23unsigned char 从最高有效位开始连续的 1 的位数
stdc_leading_ones_usC23unsigned short 从最高有效位开始连续的 1 的位数
stdc_leading_ones_uiC23unsigned int 从最高有效位开始连续的 1 的位数
stdc_leading_ones_ulC23unsigned long 从最高有效位开始连续的 1 的位数
stdc_leading_ones_ullC23unsigned long long 从最高有效位开始连续的 1 的位数
stdc_trailing_zeros_ucC23unsigned char 从最低有效位开始连续的 0 的位数
stdc_trailing_zeros_usC23unsigned short 从最低有效位开始连续的 0 的位数
stdc_trailing_zeros_uiC23unsigned int 从最低有效位开始连续的 0 的位数
stdc_trailing_zeros_ulC23unsigned long 从最低有效位开始连续的 0 的位数
stdc_trailing_zeros_ullC23unsigned long long 从最低有效位开始连续的 0 的位数
stdc_trailing_ones_ucC23unsigned char 从最低有效位开始连续的 1 的位数
stdc_trailing_ones_usC23unsigned short 从最低有效位开始连续的 1 的位数
stdc_trailing_ones_uiC23unsigned int 从最低有效位开始连续的 1 的位数
stdc_trailing_ones_ulC23unsigned long 从最低有效位开始连续的 1 的位数
stdc_trailing_ones_ullC23unsigned long long 从最低有效位开始连续的 1 的位数
stdc_first_leading_zero_uc C23unsigned char 从最高有效位开始第一个 0 所在的位
stdc_first_leading_zero_usC23unsigned short 从最高有效位开始第一个 0 所在的位
stdc_first_leading_zero_uiC23unsigned int 从最高有效位开始第一个 0 所在的位
stdc_first_leading_zero_ulC23unsigned long 从最高有效位开始第一个 0 所在的位
stdc_first_leading_zero_ullC23unsigned long long 从最高有效位开始第一个 0 所在的位
stdc_first_leading_one_uc C23unsigned char 从最高有效位开始第一个 1 所在的位
stdc_first_leading_one_usC23unsigned short 从最高有效位开始第一个 1 所在的位
stdc_first_leading_one_uiC23unsigned int 从最高有效位开始第一个 1 所在的位
stdc_first_leading_one_ulC23unsigned long 从最高有效位开始第一个 1 所在的位
stdc_first_leading_one_ullC23unsigned long long 从最高有效位开始第一个 1 所在的位
stdc_first_trailing_zero_uc C23unsigned char 从最低有效位开始第一个 0 所在的位
stdc_first_trailing_zero_usC23unsigned short 从最低有效位开始第一个 0 所在的位
stdc_first_trailing_zero_uiC23unsigned int 从最低有效位开始第一个 0 所在的位
stdc_first_trailing_zero_ulC23unsigned long 从最低有效位开始第一个 0 所在的位
stdc_first_trailing_zero_ullC23unsigned long long 从最低有效位开始第一个 0 所在的位
stdc_first_trailing_one_uc C23unsigned char 从最低有效位开始第一个 1 所在的位
stdc_first_trailing_one_usC23unsigned short 从最低有效位开始第一个 1 所在的位
stdc_first_trailing_one_uiC23unsigned int 从最低有效位开始第一个 1 所在的位
stdc_first_trailing_one_ulC23unsigned long 从最低有效位开始第一个 1 所在的位
stdc_first_trailing_one_ullC23unsigned long long 从最低有效位开始第一个 1 所在的位
stdc_count_zeros_uc C23unsigned char 中 0 的位数
stdc_count_zeros_usC23unsigned short 中 0 的位数
stdc_count_zeros_uiC23unsigned int 中 0 的位数
stdc_count_zeros_ulC23unsigned long 中 0 的位数
stdc_count_zeros_ullC23unsigned long long 中 0 的位数
stdc_count_ones_uc C23unsigned char 中 1 的位数
stdc_count_ones_usC23unsigned short 中 1 的位数
stdc_count_ones_uiC23unsigned int 中 1 的位数
stdc_count_ones_ulC23unsigned long 中 1 的位数
stdc_count_ones_ullC23unsigned long long 中 1 的位数
stdc_has_single_bit_uc C23unsigned char 中是否只有一位是 1,即是否是 2 的整数次幂
stdc_has_single_bit_usC23unsigned short 中是否只有一位是 1,即是否是 2 的整数次幂
stdc_has_single_bit_uiC23unsigned int 中是否只有一位是 1,即是否是 2 的整数次幂
stdc_has_single_bit_ulC23unsigned long 中是否只有一位是 1,即是否是 2 的整数次幂
stdc_has_single_bit_ullC23unsigned long long 中是否只有一位是 1,即是否是 2 的整数次幂
stdc_bit_width_uc C23表示给定 unsigned char 的值所需的最小位宽度
stdc_bit_width_usC23表示给定 unsigned short 的值所需的最小位宽度
stdc_bit_width_uiC23表示给定 unsigned int 的值所需的最小位宽度
stdc_bit_width_ulC23表示给定 unsigned long 的值所需的最小位宽度
stdc_bit_width_ullC23表示给定 unsigned long long 的值所需的最小位宽度
stdc_bit_floor_uc C23找出不大于给定 unsigned char 的值的 2 的最大整数次幂
stdc_bit_floor_usC23找出不大于给定 unsigned short 的值的 2 的最大整数次幂
stdc_bit_floor_uiC23找出不大于给定 unsigned int 的值的 2 的最大整数次幂
stdc_bit_floor_ulC23找出不大于给定 unsigned long 的值的 2 的最大整数次幂
stdc_bit_floor_ullC23找出不大于给定 unsigned long long 的值的 2 的最大整数次幂
stdc_bit_ceil_uc C23找出不小于给定 unsigned char 的值的 2 的最小整数次幂
stdc_bit_ceil_usC23找出不小于给定 unsigned short 的值的 2 的最小整数次幂
stdc_bit_ceil_uiC23找出不小于给定 unsigned int 的值的 2 的最小整数次幂
stdc_bit_ceil_ulC23找出不小于给定 unsigned long 的值的 2 的最小整数次幂
stdc_bit_ceil_ullC23找出不小于给定 unsigned long long 的值的 2 的最小整数次幂

#推荐阅读

创建于 2025/6/15

更新于 2025/6/30