_bittestandreset, _bittestandreset64
[Diese Dokumentation ist nur eine Vorschau und wird in späteren Versionen ggf. geändert. Blank topics are included as placeholders.]
Microsoft-spezifisch
Generieren Sie die btr-Anweisung, die die Adresse b Bit aüberprüft, seinen aktuellen Wert zurückgibt und das Bit auf 0 zurückgesetzt wird.
unsigned char _bittestandreset(
long *a,
long b
);
unsigned char _bittestandreset64(
__int64 *a,
__int64 b
);
Parameter
[in, out] a
Ein Zeiger auf den zu überprüfenden Arbeitsspeicher.[in] b
Die Bitposition zu testen.
Rückgabewert
Das Bit an der Position angegeben.
Anforderungen
Intrinsisch |
Architektur |
---|---|
_bittestandreset |
x86, IPF, x64 |
_bittestandreset64 |
IPF, x64 |
Headerdatei <intrin.h>
Hinweise
Auf der IPF-Architektur ist die btr-Anweisung nicht verfügbar, sodass diese systeminterne eine benutzerdefinierte Funktion, die das Verhalten von btrnachahmt. Diese benutzerdefinierte Funktion ist möglicherweise langsamer als eine handgeschriebene Inlinefunktion, da sie Mehraufwand beinhaltet das Behandeln des Falls, in dem es unnötig ist negativ b , das in bestimmten Fällen werden.
Diese Routine ist als systeminterne Funktion nur verfügbar.
Beispiel
// 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");
}