Freigeben über


_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");   
}
          
        

Siehe auch

Referenz

Systeminterne Funktionen des Compilers