WCM Forum

WCM Forum (http://www.wcm.at/forum/index.php)
-   Programmierung (http://www.wcm.at/forum/forumdisplay.php?f=17)
-   -   umwandlung 8-bit-zahlen in dezimalwerte (http://www.wcm.at/forum/showthread.php?t=53642)

fluidnet 18.04.2002 11:32

umwandlung 8-bit-zahlen in dezimalwerte
 
hätte ein paar theoretische fragen zum thema binärzahlen, da ich mich auf dem gebiet gern ein wenig schlau machen will.

1. wie wandle ich 8-bit-zahlen in dezimalwerte um und umgekehrt?

2. addieren von dezimal- und binärzahlen, bzw. binär + binär?

3. hexadezimale zahlen?

ich hoffe ihr könnt mir weiterhelfen, kenn mich ein bisschen aus, aber nicht gut genug. super wäre, wenn jemand so tutorials oder links hätte...

danke euch.

Groovy 18.04.2002 12:41

ad. 2)

z.B.
+101011
+011111
------
1001010

von rechts nach links:
1+1=0 (Übertrag: 1)
1+1+(1)=1 (Ü: 1)
0+1+(1)=0 (Ü: 1)
1+1+(1)=1 (Ü: 1)
0+1+(1)=0 (Ü: 1)
1+0+(1)=0 (Ü: 1)
0+0+(1)=1 (Ü: 0)


3. Hex-Zahl --> Dezimalzahl

z.B. 7FFF = 7*16^3 + F*16^2 + F*16^1 + F*16^0 = 32767

kikakater 18.04.2002 12:50

8bit Zahlen sind Dezimalzahlen ! ... mit einem Byte Umfang.

Ein Byte erlaubt es einen numerischen Wert zwischen -128 und + 127 aufzunehmen oder einen Wert von 0 bis 255.

Binär- Dezimal- und Hexadezimal-Zahl bzw. -System bezieht sich auf die äussere Darstellung eines solchen numerischen Wertes, der in z.B. 8bit - 1 Byte - gespeichert ist.

Die Umrechnung erfolgt durch die Potenzierung der Basis des jeweiligen Quell-Zahlensystems mit dem jeweiligen Rang und der Multiplikation mit der Ziffer des jeweiligen Ranges und der Summierung aller Ziffernergebnisse, danach musst Du durch Division mit den Rang-Potenzen der Basis des Ziel-Zahlensystems die einzelnen Ziffernstellen ermitteln.

"Zehner-bzw.-Dezimalsystem":

Rang 0: Einerstelle
Rang 1: Zehnerstelle
usw.

Die Einerstelle drückt sich beim Dezimalsystem so aus: Ziffer mal 10 hoch 0 ... das ergibt Ziffer mal 1.

Die Zehnerstelle drückt sich beim Dezimalsystem so aus: Ziffer mal 10 hoch 1 ... das ergibt Ziffer mal 10.

usw.

Kikakater

Suche z.B: +numbersystem +hexade[c|z]imal bzw. +binary|binär

In C kann man die printf Funktion mit dem Argument %x verwenden um einen Hexcode als String aus den Ziffern 0-9 und A-F umgewandelt zu bekommen.

Beispiel:

char c;

c=17;

printf("c dezimal = %d und sedezimal = %x\n",c,c);

Ulraich 18.04.2002 15:22

Hoffe du verstehst es!

1.)Das Dualsystem ist ein Zahlensystem zur Basis 2. Es gibt nur 2 Möglichkeiten entweder 0 oder 1.
Von rechts nach links stellt die erste position 2 hoch 0 dar, die zweite 2 hoch 1, die dritte 2 hoch 2,...
7654 3210
1011 0101 = 1*(2hoch 7)+0*(2hoch6)+1*(2hoch5)+1*(2hoch4)+(0*2hoch3)+ +1*(2hoch2)+0*(2hoch1)+1*(2hoch0)= 128 + 32 + 16 + 4 + 1 = 181
Wenn man vom Dezimalen ins duale will, dann werden mehrere aufeinander folgende Divisionen mit der Basiszahl des Systems verwendet. In diesem Fall lautet die Basiszahl 2.

Beispiel:
Konvertieren Sie die Dezimalzahl 192 in eine Binärzahl.
192 geteilt durch 2 = 2 ist 96 mal in 192, Rest 0
96 geteilt durch 2 = 2 ist 48 mal in 96, Rest 0
48 geteilt durch 2 = 2 ist 24 mal in 48, Rest 0
24 geteilt durch 2 = 12 mal 2 ist 24, Rest 0
12 geteilt durch 2 = 2 ist 6 mal in 12, Rest 0
6 geteilt durch 2 = 2 ist 3 mal in 6, Rest 0
3 geteilt durch 2 = 2 ist 1 mal in 3, Rest 1
1 geteilt durch 2 = 2 ist 0 mal in 1, Rest 1
Alle Restwerte, vom letzten bis zum ersten aufgeschrieben, ergeben die Binärzahl 11000000.

... schau mal da nach: http://www.howstuffworks.com/bytes.htm

2.)Addition verläuft so das 0+0 bleibt 0 also = 0
Bei 0 + 1 ist das selbe wie 1 + 0 was logischerweiße 1 ergibt
Bei 1 + 1 Würde im Dezimalen 2 kommen, im dualen wird auch eins weiter gezählt u deshalb wird ein übertrag gebildet 1 + 1 = 0 (+Übertrag) Wenn man die rechnung jetzt mit 2bit macht: 01 + 01 werden auch die beiden einser addiert u der übertrag kommt dann in die nächste hohere stelle also ist das ergebnis 01 + 01 = 10. Wenn man dann nachrechnet stimmte es auch 1 + 1 = 2 hoch eins = 2.

3.)Das Hexadezimalsystem ist ein Zahlensystem zur Basis 16. Da es nur 10 Symbole zur Darstellung von Ziffern (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) gibt und für die Basis 16 noch weitere sechs Symbole erforderlich sind, nimmt man Buchstaben A, B, C, D, E und F als zusätzliche Symbole.
Die Position jedes Symbols oder jeder Ziffer in einer Hexzahl repräsentiert die Basiszahl 16 multipliziert mit einer von der Position abhängigen Potenz (oder einem Exponenten). Von rechts nach links stellt die erste Position 16 hoch 0 bzw. 1 dar, die zweite 16 hoch 1 bzw. 16, die dritte 16² usw.

Beispiel:
4F6A = (4 x 16³)+ (F[15] x 16²)+ (6 x 16 hoch 1)+ (A[10] x 16 hoch 0)

Ähnlich wie bei binären Zahlen erfolgt die Umrechnung von dezimal auf hexadezimal mit einem speziellen Verfahren, dem sogenannten Divisionsrestverfahren. Man arbeitet dabei mit schrittweisen Divisionen mit der Basiszahl des Systems, in diesem Fall 16.

Beispiel:
Rechne die dezimale Zahl 24032 in eine hexadezimale Zahl um.

24032 / 16 = 24032 geteilt durch 16 ist 1502, Rest 0
1502 / 16 = 1502 geteilt durch 16 ist 93, Rest 14 bzw. E
93 / 16 = 93 geteilt durch 16 ist 5, Rest 13 bzw. D
13 / 16 = Dieses letzte Ergebnis liegt unter 16 und bildet daher die erste Stelle der Hexzahl.

Das letzte Ergebnis und alle Restwerte, vom letzten bis zum ersten aufgeschrieben, ergeben den hexadezimalen Wert 5DE0.

Es kann sein das mir Fehler unterlaufen sind, aber ich glaubs nicht

fluidnet 18.04.2002 18:28

vielen dank für eure ausführlichen beiträge. mal sehn ob ichs jetzt kapiere.

lg


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:46 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag