valarray::operator~
Ein unärer Operator, der die bitweisen NICHT-Werte jedes Elements in einem Array von Werten erhalten.
valarray<Type> operator~( ) const;
Rückgabewert
Der Wertarray von booleschen Werten, die bitweise NICHT der Elementwerte des Operandenwertarrays sind.
Hinweise
Eine bitweise Operation kann nur verwendet werden, um in Bits char und int und -Varianten Datentypen und nicht auf float, double, long double, void, bool oder andere, mehr Typen komplexer Daten zu bearbeiten.
Bitweise NICHT hat, dieselbe Wahrheitstabelle wie logische NICHT gilt aber auf den Datentyp auf der Ebene der einzelnen Bits zu. Gegeben Bit b, ~b gilt, wenn b falsch und falsch, wenn b true ist. Logische NICHT Operator! gilt auf Elementebene und zu einer werden alle Werte ungleich 0 (null) als true, und das Ergebnis ist ein Wertarray von booleschen Werten. Bitweise NICHT operator~, hingegen von, kann ein Wertearray von Werten als 0 oder 1, abhängig vom Ergebnis der bitweise Operation ergeben.
Beispiel
// valarray_op_bitnot.cpp
// compile with: /EHsc
#include <valarray>
#include <iostream>
int main( )
{
using namespace std;
int i;
valarray<unsigned short int> vaL1 ( 10 );
valarray<unsigned short int> vaNOT1 ( 10 );
for ( i = 0 ; i < 10 ; i += 2 )
vaL1 [ i ] = i;
for ( i = 1 ; i < 10 ; i += 2 )
vaL1 [ i ] = 5*i;
cout << "The initial valarray <unsigned short int> is: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaL1 [ i ] << " ";
cout << ")." << endl;
vaNOT1 = ~vaL1;
cout << "The element-by-element result of "
<< "the bitwise NOT operator~ is the\n valarray: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaNOT1 [ i ] << " ";
cout << ")." << endl << endl;
valarray<int> vaL2 ( 10 );
valarray<int> vaNOT2 ( 10 );
for ( i = 0 ; i < 10 ; i += 2 )
vaL2 [ i ] = i;
for ( i = 1 ; i < 10 ; i += 2 )
vaL2 [ i ] = -2 * i;
cout << "The initial valarray <int> is: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaL2 [ i ] << " ";
cout << ")." << endl;
vaNOT2 = ~vaL2;
cout << "The element-by-element result of "
<< "the bitwise NOT operator~ is the\n valarray: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaNOT2 [ i ] << " ";
cout << ")." << endl;
// The negative numbers are represented using
// the two's complement approach, so adding one
// to the flipped bits returns the negative elements
vaNOT2 = vaNOT2 + 1;
cout << "The element-by-element result of "
<< "adding one\n is the negative of the "
<< "original elements the\n valarray: ( ";
for ( i = 0 ; i < 10 ; i++ )
cout << vaNOT2 [ i ] << " ";
cout << ")." << endl;
}
Anforderungen
Header: <valarray>
Namespace: std