7.2.2 Встроенные функции битовых операций
-
Встроенная функция:
int__builtin_ffs(int x) Возвращает индекс младшего значащего бита со значением 1 в x, увеличенный на единицу, или 0, если x равен нулю.
-
Встроенная функция:
int__builtin_clz(unsigned int x) Возвращает количество ведущих нулевых битов в x, начиная со старшего значащего бита. Если x равен 0, результат не определён.
-
Встроенная функция:
int__builtin_ctz(unsigned int x) Возвращает количество конечных нулевых битов в x, начиная с младшего значащего бита. Если x равен 0, результат не определён.
-
Встроенная функция:
int__builtin_clrsb(int x) Возвращает количество ведущих избыточных знаковых битов в x, то есть количество битов после старшего значащего бита, совпадающих с ним. Для 0 и других значений особых случаев нет.
-
Встроенная функция:
int__builtin_popcount(unsigned int x) Возвращает количество единичных битов в x.
-
Встроенная функция:
int__builtin_parity(unsigned int x) Возвращает чётность x, то есть количество единичных битов в x по модулю 2.
-
Встроенная функция:
int__builtin_ffsl(long) Аналогична
__builtin_ffs, но тип аргумента —long.
-
Встроенная функция:
int__builtin_clzl(unsigned long) Аналогична
__builtin_clz, но тип аргумента —unsigned long.
-
Встроенная функция:
int__builtin_ctzl(unsigned long) Аналогична
__builtin_ctz, но тип аргумента —unsigned long.
-
Встроенная функция:
int__builtin_clrsbl(long) Аналогична
__builtin_clrsb, но тип аргумента —long.
-
Встроенная функция:
int__builtin_popcountl(unsigned long) Аналогична
__builtin_popcount, но тип аргумента —unsigned long.
-
Встроенная функция:
int__builtin_parityl(unsigned long) Аналогична
__builtin_parity, но тип аргумента —unsigned long.
-
Встроенная функция:
int__builtin_ffsll(long long) Аналогична
__builtin_ffs, но тип аргумента —long long.
-
Встроенная функция:
int__builtin_clzll(unsigned long long) Аналогична
__builtin_clz, но тип аргумента —unsigned long long.
-
Встроенная функция:
int__builtin_ctzll(unsigned long long) Аналогична
__builtin_ctz, но тип аргумента —unsigned long long.
-
Встроенная функция:
int__builtin_clrsbll(long long) Аналогична
__builtin_clrsb, но тип аргумента —long long.
-
Встроенная функция:
int__builtin_popcountll(unsigned long long) Аналогична
__builtin_popcount, но тип аргумента —unsigned long long.
-
Встроенная функция:
int__builtin_parityll(unsigned long long) Аналогична
__builtin_parity, но тип аргумента —unsigned long long.
-
Встроенная функция:
int__builtin_ffsg(...) Аналогична
__builtin_ffs, но аргумент имеет тип обобщённого знакового целого числа (стандартный, расширенный или с заданной точностью в битах). Целочисленные продвижения аргумента не выполняются.
-
Встроенная функция:
int__builtin_clzg(...) Аналогична
__builtin_clz, но аргумент имеет тип обобщённого беззнакового целого числа (стандартный, расширенный или с заданной точностью в битах); предусмотрен необязательный второй аргумент типа int. Целочисленные продвижения первого аргумента не выполняются. Если указаны два аргумента и первый аргумент равен 0, результатом является второй аргумент. Если указан только один аргумент и он равен 0, результат не определён.
-
Встроенная функция:
int__builtin_ctzg(...) Аналогична
__builtin_ctz, но аргумент имеет тип обобщённого беззнакового целого числа (стандартный, расширенный или с заданной точностью в битах); предусмотрен необязательный второй аргумент типа int. Целочисленные продвижения первого аргумента не выполняются. Если указаны два аргумента и первый аргумент равен 0, результатом является второй аргумент. Если указан только один аргумент и он равен 0, результат не определён.
-
Встроенная функция:
int__builtin_clrsbg(...) Аналогична
__builtin_clrsb, но аргумент имеет тип обобщённого знакового целого числа (стандартный, расширенный или с заданной точностью в битах). Целочисленные продвижения аргумента не выполняются.
-
Встроенная функция:
int__builtin_popcountg(...) Аналогична
__builtin_popcount, но аргумент имеет тип обобщённого беззнакового целого числа (стандартный, расширенный или с заданной точностью в битах). Целочисленные продвижения аргумента не выполняются.
-
Встроенная функция:
int__builtin_parityg(...) Аналогична
__builtin_parity, но аргумент имеет тип обобщённого беззнакового целого числа (стандартный, расширенный или с заданной точностью в битах). Целочисленные продвижения аргумента не выполняются.
-
Встроенная функция:
type__builtin_stdc_bit_ceil(type arg) Функция
__builtin_stdc_bit_ceilдоступна только в C. Она является типообобщённой; аргументом может быть любое беззнаковое целое число (стандартное, расширенное или с заданной точностью в битах). Целочисленные продвижения аргумента не выполняются. Она эквивалентнаarg <= 1 ? (type) 1 : (type) 2 << (prec - 1 - __builtin_clzg ((type) (arg - 1))), где prec — разрядность type, за исключением того, что побочные эффекты в arg вычисляются только один раз.
-
Встроенная функция:
type__builtin_stdc_bit_floor(type arg) Функция
__builtin_stdc_bit_floorдоступна только в C. Она является типообобщённой; аргументом может быть любое беззнаковое целое число (стандартное, расширенное или с заданной точностью в битах). Целочисленные продвижения аргумента не выполняются. Она эквивалентнаarg == 0 ? (type) 0 : (type) 1 << (prec - 1 - __builtin_clzg (arg)), где prec — разрядность type, за исключением того, что побочные эффекты в arg вычисляются только один раз.
-
Встроенная функция:
unsigned int__builtin_stdc_bit_width(type arg) Функция
__builtin_stdc_bit_widthдоступна только в C. Она является типообобщённой; аргументом может быть любое беззнаковое целое число (стандартное, расширенное или с заданной точностью в битах). Целочисленные продвижения аргумента не выполняются. Она эквивалентна(unsigned int) (prec - __builtin_clzg (arg, prec)), где prec — разрядность type.
-
Встроенная функция:
unsigned int__builtin_stdc_count_ones(type arg) Функция
__builtin_stdc_count_onesдоступна только в C. Она является типообобщённой; аргументом может быть любое беззнаковое целое число (стандартное, расширенное или с заданной точностью в битах). Целочисленные продвижения аргумента не выполняются. Она эквивалентна(unsigned int) __builtin_popcountg (arg)
-
Встроенная функция:
unsigned int__builtin_stdc_count_zeros(type arg) Функция
__builtin_stdc_count_zerosдоступна только в C. Она является типообобщённой; аргументом может быть любое беззнаковое целое число (стандартное, расширенное или с заданной точностью в битах). Целочисленные продвижения аргумента не выполняются. Она эквивалентна(unsigned int) __builtin_popcountg ((type) ~arg)
-
Встроенная функция:
unsigned int__builtin_stdc_first_leading_one(type arg) Функция
__builtin_stdc_first_leading_oneдоступна только в C. Она является типообобщённой; аргументом может быть любое беззнаковое целое число (стандартное, расширенное или с заданной точностью в битах). Целочисленные продвижения аргумента не выполняются. Она эквивалентна__builtin_clzg (arg, -1) + 1U
-
Встроенная функция:
unsigned int__builtin_stdc_first_leading_zero(type arg) Функция
__builtin_stdc_first_leading_zeroдоступна только в C. Она является типообобщённой; аргументом может быть любое беззнаковое целое число (стандартное, расширенное или с заданной точностью в битах). Целочисленные продвижения аргумента не выполняются. Она эквивалентна__builtin_clzg ((type) ~arg, -1) + 1U
-
Встроенная функция:
unsigned int__builtin_stdc_first_trailing_one(type arg) Функция
__builtin_stdc_first_trailing_oneдоступна только в C. Она является типообобщённой; аргументом может быть любое беззнаковое целое число (стандартное, расширенное или с заданной точностью в битах). Целочисленные продвижения аргумента не выполняются. Она эквивалентна__builtin_ctzg (arg, -1) + 1U
-
Встроенная функция:
unsigned int__builtin_stdc_first_trailing_zero(type arg) Функция
__builtin_stdc_first_trailing_zeroдоступна только в C. Она является типообобщённой; аргументом может быть любое беззнаковое целое число (стандартное, расширенное или с заданной точностью в битах). Целочисленные продвижения аргумента не выполняются. Она эквивалентна__builtin_ctzg ((type) ~arg, -1) + 1U
-
Встроенная функция:
unsigned int__builtin_stdc_has_single_bit(type arg) Функция
__builtin_stdc_has_single_bitдоступна только в C. Она является типообобщённой; аргументом может быть любое беззнаковое целое число (стандартное, расширенное или с заданной точностью в битах). Целочисленные продвижения аргумента не выполняются. Она эквивалентна(_Bool) (__builtin_popcountg (arg) == 1)
-
Встроенная функция:
unsigned int__builtin_stdc_leading_ones(type arg) Функция
__builtin_stdc_leading_onesдоступна только в C. Она является типообобщённой; аргументом может быть любое беззнаковое целое число (стандартное, расширенное или с заданной точностью в битах). Целочисленные продвижения аргумента не выполняются. Она эквивалентна(unsigned int) __builtin_clzg ((type) ~arg, prec)
-
Встроенная функция:
unsigned int__builtin_stdc_leading_zeros(type arg) Функция
__builtin_stdc_leading_zerosдоступна только в C. Она является типообобщённой; аргументом может быть любое беззнаковое целое число (стандартное, расширенное или с заданной точностью в битах). Целочисленные продвижения аргумента не выполняются. Она эквивалентна(unsigned int) __builtin_clzg (arg, prec)
-
Встроенная функция:
unsigned int__builtin_stdc_trailing_ones(type arg) Функция
__builtin_stdc_trailing_onesдоступна только в C. Она является типообобщённой; аргументом может быть любое беззнаковое целое число (стандартное, расширенное или с заданной точностью в битах). Целочисленные продвижения аргумента не выполняются. Она эквивалентна(unsigned int) __builtin_ctzg ((type) ~arg, prec)
-
Встроенная функция:
unsigned int__builtin_stdc_trailing_zeros(type arg) Функция
__builtin_stdc_trailing_zerosдоступна только в C. Она является типообобщённой; аргументом может быть любое беззнаковое целое число (стандартное, расширенное или с заданной точностью в битах). Целочисленные продвижения аргумента не выполняются. Она эквивалентна(unsigned int) __builtin_ctzg (arg, prec)
-
Встроенная функция:
type1__builtin_stdc_rotate_left(type1 arg1, type2 arg2) Функция
__builtin_stdc_rotate_leftдоступна только в C. Она является типообобщённой: первый аргумент может быть любым беззнаковым целым числом (стандартным, расширенным или с заданной точностью в битах), а второй — любым знаковым или беззнаковым целым числом либоchar. Целочисленные продвижения аргументов не выполняются. Она эквивалентна(type1) ((arg1 << (arg2 % prec)) | (arg1 >> ((-(unsigned type2) arg2) % prec))), где prec — разрядность type1, за исключением того, что побочные эффекты в arg1 и arg2 вычисляются только один раз. Поведение не определено, если arg2 отрицателен.
-
Встроенная функция:
type1__builtin_stdc_rotate_right(type1 arg1, type2 arg2) Функция
__builtin_stdc_rotate_rightдоступна только в C. Она является типообобщённой: первый аргумент может быть любым беззнаковым целым числом (стандартным, расширенным или с заданной точностью в битах), а второй — любым знаковым или беззнаковым целым числом либоchar. Целочисленные продвижения аргументов не выполняются. Она эквивалентна(type1) ((arg1 >> (arg2 % prec)) | (arg1 << ((-(unsigned type2) arg2) % prec))), где prec — разрядность type1, за исключением того, что побочные эффекты в arg1 и arg2 вычисляются только один раз. Поведение не определено, если arg2 отрицателен.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-15.3.0/gcc/Bit-Operation-Builtins.html