Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Specyficzne dla firmy Microsoft
Wygeneruj instrukcję, aby zbadać bit b
adresu a
, zwrócić jego bieżącą wartość i zresetować bit do wartości 0.
Składnia
unsigned char _bittestandreset(
long *a,
long b
);
unsigned char _bittestandreset64(
__int64 *a,
__int64 b
);
Parametry
a
[in, out] Wskaźnik do pamięci do zbadania.
b
[in] Położenie bitu do przetestowania.
Wartość zwracana
Bit w określonej pozycji.
Wymagania
Nieodłączny | Architektura |
---|---|
_bittestandreset |
x86, ARM, x64, ARM64 |
_bittestandreset64 |
x64, ARM64 |
Plik<nagłówka intrin.h>
Uwagi
Ta rutyna jest dostępna tylko jako wewnętrzna.
Przykład
// bittestandreset.cpp
// processor: x86, IPF, x64
#include <stdio.h>
#include <limits.h>
#include <intrin.h>
#pragma intrinsic(_bittestandreset)
// Check the sign bit and reset to 0 (taking the absolute value)
// Returns 0 if the number is positive or zero
// Returns 1 if the number is negative
unsigned char absolute_value(long* p)
{
const int SIGN_BIT = 31;
return _bittestandreset(p, SIGN_BIT);
}
int main()
{
long i = -112;
unsigned char result;
// Check the sign bit and reset to 0 (taking the absolute value)
result = absolute_value(&i);
if (result == 1)
printf_s("The number was negative.\n");
}
The number was negative.
END Microsoft Specific