Интринсик intrinsic(_BitScanForward)

418
31 мая 2017, 06:27

Как использовать интринсик

#pragma intrinsic(_BitScanForward)  

В моем коомпиляторе не поддерживает я библиотека intrin.h

Answer 1

У gcc есть аналогичный интринсик __builtin_ctz. Согласно википедии, должен работать и в clang.

Документация на _BitScanForward:

Search the mask data from least significant bit (LSB) to the most significant bit (MSB) for a set bit (1).

Parameters

[out] Index Loaded with the bit position of the first set bit (1) found.

Remarks

If a set bit is found, the bit position of the first set bit found is returned in the first parameter. If no set bit is found, 0 is returned; otherwise, 1 is returned.

Документация на __builtin_ctz в gcc:

Built-in Function: int __builtin_ctz (unsigned int x)

Returns the number of trailing 0-bits in x, starting at the least significant bit position. If x is 0, the result is undefined.

Эти определения кажутся равносильными (но _BitScanForward возвращает результат через out-параметр, а не через возвращаемое значение), за исключением случая нулевого аргумента. В этом случае _BitScanForward возвращает нулевой результат. Для clang вам нужно либо проверять на 0 параметр, либо воспользоваться аналогичным __builtin_ffs (который возвращается результат на единицу больше).

READ ALSO
Шифр цезаря (посимвольный ввод)

Шифр цезаря (посимвольный ввод)

Всем доброго времени сутокИмеется файл с форматом txt

342
Как правильно унаследовать istream / ostream?

Как правильно унаследовать istream / ostream?

Ну вообщем цель такова, чтобы в функцию можно было передать либо обьект моего класса, либо же cout , cin

340
Конвертер функции с возвращаемым типом T в функцию с возвращаемым типом string

Конвертер функции с возвращаемым типом T в функцию с возвращаемым типом string

Пытался написать функцию, которая делает то, что указано в заголовке:

300