![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Jr. Member
![]() Registriert seit: 05.02.2002
Beiträge: 33
|
![]() 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. |
![]() |
![]() |
![]() |
#2 |
Inventar
![]() Registriert seit: 24.01.2001
Beiträge: 5.107
|
![]() 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 |
![]() |
![]() |
![]() |
#3 |
Inventar
![]() Registriert seit: 24.01.2001
Beiträge: 5.631
|
![]() 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); |
![]() |
![]() |
![]() |
#4 |
Veteran
![]() |
![]() 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 |
![]() |
![]() |
![]() |
#5 |
Jr. Member
![]() Registriert seit: 05.02.2002
Beiträge: 33
|
![]() vielen dank für eure ausführlichen beiträge. mal sehn ob ichs jetzt kapiere.
lg |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|