Hallo Franz
Hab da eine Frage bezüglich eines Casts: Wenn ich 1101001011
einer Integer-Variable zuweise, wird dieser automatisch
gecastet oder?
1101001011 ist einfach die Dezimalzahl 1,101,001,011
Ein „binäres“ 1101001011 gibt es weder in C noch in C++.
Entweder ist es ein ‚string literal‘, dann sieht
das z.B. so aus: char binzahl[] = „1101001011“;
oder eben eine Dezimalzahl (‚numeric literal‘).
Bsp.:
unsigned int result;
result = ADDAT & 0x03FF;
Der Präfix 0x bestimmt in C/C++, dass es
sich um ein Hexadezimal-‚numeric literal‘
handelt. Es gibt darüberhinaus noch
die blanke ‚0‘ (Null) als Präfix, dann ist
es ein Oktal-‚numeric literal‘ (03456).
Um den echten Wert zu erhalten, muss ich dann eine Umrechnung
machen? Mir gehts darum, damit ich verstehe warum ich die
Umrechnung mache. Wie ich diese mache, weiß ich. Aber
verstehen tu ich sie bis jetzt nicht … (* Maximalwert /
Anzahl der Stufen)
Letzlich ist eine Dezimalzahl eine Darstellung
einer Zahl bezogen auf die „Basis“ 10, eine Binärzahl
auf die Basis 2, „Hexadezimal“ zur Basis 16 usw.
Da ein Computer sich um die „2“ Zustände „an“/„aus“
dreht, besitzt er „physikalisch“ eine Binärrepräsentation
der abgelegten Zahlen (es gibt nur 2 verschiedene Ziffern).
Ich hoffe ihr könnt mir eine hilfreiche Auskunft geben!
Hier kannst Du mal (für C++) ein wenig damit spielen:
#include
#include
#include
using namespace std;
const string get\_binary(int zahl) {
return bitset( zahl ).to\_string();
}
int main()
{
int zahl = 0x03ff;
string binzahl = get\_binary(zahl);
// Ausgabe der Zahl in verschiedenen Darstellungen (Basis)
printf("zahl: HEX=%x =\> DEC=%d =\> OCT=%o =\> BIN=%s\n\n", zahl, zahl, zahl, binzahl.c\_str());
int neu = 0;
printf("neue Zahl ist: %8x %8d %8o %s\n", neu, neu, neu, get\_binary(neu).c\_str());
// Rueckrechnen des bin-strings fuer 32bit Zahlen
// auf Intel (LSB first, 'little endian')
for(int pos=0,bit=1; posGrüße
CMБ