binär
-
Wie kann ich in C++ einen Wert als Binäre Zahl ausgeben?
mfg
-
z.b. mit _itoa. ist aber C...
oder selber machen

-
oder du rechnest es selber aus -.-
(dez) 124
124 : 2 = 62 Rest 0
62 : 2 = 31 Rest 0
31 : 2 = 15 Rest 1
15 : 2 = 7 Rest 1
7 : 2 = 3 Rest 1
3 : 2 = 1 Rest 1
1 : 2 = 0 Rest 1(bin) 1111100
-
Oder du verwendest bitsets:
typedef bitset<numeric_limits<int>::digits> bin_val; bin_val value(4711); cout<<value;
-
-
int a = 124; int bits = 8 * sizeof(a); for(int j = bits -1; j >= 0; --j) { if(a & (1 << j)) cout << "1"; else cout << "0"; } cout << " <- Als Bitzahl mit " << bits << " Bits - Dezimal ist " << a << endl;
-
Eine weitere sehr schöne Möglichkeit für die Umwandlung während der Zeit des Compilierens unter Verwendung der Mittel, welche die Template-Metaprogrammierung bereitstellen, ist folgende:
#include <iostream> using namespace std; template <unsigned long n> struct dec2bin { static unsigned const value = dec2bin<n/10>::value << 1 | n%10; }; template <> struct dec2bin<0> { static unsigned const value = 0; }; int main() { cout << "L00L=" << dec2bin<1001>::value << endl; }Grüße
Martin
-
wir haben eine "globale" methode für sowas (ähnlich dem beitrag 2-3 weiter oben):
//returns bitmask as string e.g. 0001 0100 1101 template<typename T> inline std::string getBitString(const T& value) { stringstream text; for(int i=sizeof(value)*8-1/*8 bits per byte*/; i>=0; i--) { text<<(char) ( ((value>>i) & 1) + '0'); if(i%4 == 0 && i>0) text<<' '; } return text.str(); }
-
int a = 124;
int bits = 8 * sizeof(a);
for(int j = bits -1; j >= 0; --j) {
if(a & (1 << j))
cout << "1";
else cout << "0";
}eben ausprobiert, warum kann man nicht schreiben
if(a | (0 << j))
oder gibt doch nur das ein-bit zurück wenn operand1 ODER operand2 eine 1 liefert.
bei folgenden bitmuster (8 bit) kann der doch nicht lauter einsen zurück geben, aber bei mir macht der das. ??
000001011 - dezimal 11, mit ODER verknüpft -> a | (0 << j)
000000000
000001011es gibt aber NUR EINSER zurück, warum?
-
pussycatdoll schrieb:
if(a | (0 << j))
Das (0 << j) ist immer 0. Und irgendwas | 0 gibt immer irgendwas. Und wenn irgendwas nicht 0 ist, dann ist es wahr.
-
danke, aber a ist nicht irgendwas sondern im bsp. ja 0.
wie man im bitmuster ja sehen kann.
| bitverknüpfung laut wahrheitstabelle bei
0 | 0 = 0
0 | 1 = 1
1 | 0 = 1
1 | 1 = 1und im bitmuster
000001011
oder verknüpft mit
000000000
ergibt also000001011
im if ergäbe das doch 0 und somit FALSE, was dann zum else ging. tut es aber nicht.
irgendwas kapier ich hier nihct.