Mailinglist Archive: opensuse-programming-de (41 mails)
| < Previous | Next > |
Re: Bits in integer-Wert
- From: Tobias Erbsland <terbsland@xxxxxxxxxxxx>
- Date: Tue, 5 Apr 2005 08:10:42 +0200
- Message-id: <200504050810.42715.terbsland@xxxxxxxxxxxx>
Hallo
> #include <bitset>
> #include <iostream>
>
> using namespace std;
Wo unterrichtet man denn dieses "using namespace std;" ? Der Namensbereich std
hat man zur Unterscheidung zwischen eigenen Funktionen und Variablen und der
standard Bibliothek eingeführt.
#include <iostream>
int main( int argc, char* argv[] )
{
const int x = 42;
for( int i = sizeof(x)*8-1; i >= 0; i-- )
{
std::cout << ((x & (2<<i)) > 0);
}
std::cout << std::endl;
return 0;
}
Bis auf die Ausgabe ist das eine reine C Lösung.
> #define N 32
>
> int main(void) {
> bitset<N> b = 5; // oder bitset<N> b; cout << "zahl: "; cin >> b;
> int bitsset;
> for(register unsigned int i = 0; i < N; i++) {
> if( b[i] ) { bitsset++; }
> }
> cout << bitsset << endl;
> return 0;
> }
Das ist eher ein C++ Ansatz, jedoch deutet die for Schleife und viel schlimmer
das #define noch auf den eingefleischten C Programmierer hin. Wenn schon die
STL dann richtig:
#include <iostream>
#include <bitset>
int main( int argc, char* argv[] )
{
const int x = 42;
std::bitset<sizeof(x)*8> x_bits( x );
std::cout << "Number of bits set: " << x_bits.count() << std::endl;
std::cout << "Binary representation: " << x_bits << std::endl;
return 0;
}
Gruss
Tobias
| < Previous | Next > |