Perché questo programma mostra il seguente output?Perché la variabile std :: bitset <8> non è in grado di gestire 11111111?
#include <bitset>
...
{
std::bitset<8> b1(01100100); std::cout<<b1<<std::endl;
std::bitset<8> b2(11111111); std::cout<<b2<<std::endl; //see, this variable
//has been assigned
//the value 11111111
//whereas, during
//execution, it takes
//the value 11000111
std::cout << "b1 & b2: " << (b1 & b2) << '\n';
std::cout << "b1 | b2: " << (b1 | b2) << '\n';
std::cout << "b1^b2: " << (b1^b2) << '\n';
}
Questa è l'uscita:
01000000
11000111
b1 & b2: 01000000
b1 | b2: 11000111
b1^b2: 10000111
In primo luogo, ho pensato che c'è qualcosa di sbagliato con il file di intestazione (stavo usando MinGW), così ho controllato utilizzando MSVCC. Ma anche ha mostrato la stessa cosa. Per favore aiuto.
utilizzando 0xff lo risolverà (o 0b11111111 è il compilatore che lo supporta) –
Potrebbe essere un po 'pulito se ha fatto l'inizializzazione binaria in decimale come quella – Inverse