www.vorhilfe.de
- Förderverein -
Der Förderverein.

Gemeinnütziger Verein zur Finanzierung des Projekts Vorhilfe.de.
Hallo Gast!einloggen | registrieren ]
Startseite · Mitglieder · Impressum
Forenbaum
^ Forenbaum
Status VH e.V.
  Status Vereinsforum

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Suchen
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Uni-Sonstiges" - Binär -> Hexadezimalsystem
Binär -> Hexadezimalsystem < Sonstiges < Hochschule < Mathe < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Uni-Sonstiges"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Binär -> Hexadezimalsystem: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 12:35 So 01.09.2019
Autor: volk

Hallo,

ich bin gerade bei der Umwandlung einer Binärzahl (unsigned char 8 Bit) in eine Hexadezimalzahl über folgende Umwandlung nur mit Hilfe von Bit-Operationen gestolpert:

Die Zahl sei [mm] (72)_{10}=(1001000)_{2} [/mm]

Die beiden Bits der Hexadezimalzahl wurden wie folgt bestimmt:

High-Bit : 1001000 >> 4 = [mm] (100)_{2}=(4) [/mm]
Low-Bit: 1001000 & 1111 = [mm] (1000)_{2}=(8) [/mm]

Das macht [mm] (48)_{16} [/mm]

Meine Frage hierzu ist die folgende: das der Verschiebeoperator eine ganzzahlige Division darstellt, ist mir bewusst. Das der Und-Operator zur Modulo-Berechnung benutzt werden kann, allerdings nicht. Auch ist mir nicht bewusst, wieso [mm] (1111)_{2}=(15)_{10} [/mm] statt [mm] (10000)_{2}=(16)_{10} [/mm] benutzt wird.

Viele Grüße
volk

        
Bezug
Binär -> Hexadezimalsystem: Antwort
Status: (Antwort) fertig Status 
Datum: 12:57 So 01.09.2019
Autor: chrisno

mit dem und-Operator werden die führenden Bits beseitigt und die letzten Bits erhalten.
Ich schreibe mal die Operation als & 00001111.
Jede Null im der Zeichenkette sorgt dafür, dass das Zeichen ignoriert wird, jede Eins dafür, dass das vorhandene Zeichen auch erhalten bleibt.
Bestimme das Ergebnis von
1001000
& 10000
Da kommt nichts brauchbares heraus. Hingegen
  1001000
& 0001111
= 0001000


Bezug
                
Bezug
Binär -> Hexadezimalsystem: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 13:43 So 01.09.2019
Autor: volk

Hallo chrisno,
vielen Dank für deine schnelle Antwort.
Dieses Verfahren funktioniert dann aber nur, so wie ich das sehe, wenn der Divisor eine Zweierpotenz ist, oder? Wie geht man in allen anderen Fällen vor?

Bezug
                        
Bezug
Binär -> Hexadezimalsystem: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 17:28 So 01.09.2019
Autor: chrisno

Davon habe ich keine Ahnung.
Letzlich kann man immer den normalen Algorithmus, wie bei der schriftlichen Division durchführen.

Bezug
                        
Bezug
Binär -> Hexadezimalsystem: Antwort
Status: (Antwort) fertig Status 
Datum: 19:26 So 01.09.2019
Autor: HJKweseleit

Es geht dir ja darum, eine Binär- in eine Hexadezimal-Zahl umzuwandeln.

Nehmen wir zunächst ein anderes Beispiel: Du möchtest die Zahl [mm] N=(347)_{10}, [/mm] die, aber - sagen wir mal - im 3-er-System codiert ist, in seine Dezimalziffern (auch im Dreiersystem codiert) zerlegen. Dann könntest du das so programmieren:

Einerziffer a ermitteln durch a = N mod 10 = 7.
Nun ziehst du von N das a ab: [mm] N'=(340)_{10} [/mm]
Dann dividierst du N' durch 10: N''= [mm] (34)_{10} [/mm]

Zehnerziffer b=4 ermitteln, indem du nun mit N'' dasselbe machst wir oben mit N usw.

Dabei spielt es keine Rolle, ob die Zahl im 3-er-, 2-er-, 10-er- oder 16-er-System codiert ist. Du erhältst immer die so codierten Ziffern für das 10-er-System.

Der Unterschied zur Kombination Binär-Hexadezimal-System besteht aber nun in Folgendem:

Zunächst mal hat das Hexadezimalsystem nicht die 10 Ziffern 0 bis 9, sondern 0 bis 15, wobei man für 10-15 weitere Zeichen braucht und die Buchstaben A-F benutzt.
Nach [mm] F=(15)_{10} [/mm] kommt dann [mm] (10)_{16}=(16)_{10}. [/mm]

Die Ziffern [mm] (0)_{16} [/mm] bis [mm] (F)_{16} [/mm] sehen aber im Binärsystem so aus: [mm] (0000)_{2} [/mm] bis [mm] (1111)_{2}. [/mm] Danach kommt im Hexadezimalsystem die [mm] (10)_{16} [/mm] = [mm] (10000)_{2} [/mm] im Binärsystem.
Somit entspricht die letzte Ziffer im Hexadezimalsystem genau dem Wert der letzten 4 Ziffern im Binärsystem!!!
Wie in obigem Rechenbeispiel gezeigt, ziehst du die nun von der bisherigen Zahl im Binärsystem ab, so dass die letzten 4 Ziffern alles Nullen werden. Dann Dividierst du durch 16, und das entspricht im Binärsystem genau dem Rechtsshiften um 4 Stellen. (Da im Computer beim Rechtsshiften die letzten Stellen einfach wegfallen, kannst du auf das Abziehen und Dividieren verzichten, und genau das macht die Sache so effektiv!)

Fazit: Weil [mm] 2^4=16 [/mm] ist, entsprechen die vierer-Zahlenblöcke im Binärsystem - von hinten eingeteilt - genau den Ziffern im Hexadezimalsystem.

Würdest du Ziffern im 32-er-System bilden wollen, müsstest du die Binärzahl von hinten nur immer in 5-er-Blöcke zerlegen. Zahlen des 3-er-Systems, immer von hinten in Dreierblöcke zerlegt, würden die ziffern des 27-er-Systems ergeben usw.

Wolltest du aber Binärzahlen im 7-er-System darstellen, könntest du die Ziffern nicht mehr durch Blockbildung bekommen!

Bezug
                                
Bezug
Binär -> Hexadezimalsystem: 256-Ziffern Darstellung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 18:53 Sa 14.09.2019
Autor: vlado77

Bei Digitalspeicherung, wo die Reihen von 8 Bits in die Bytes gruppiert werden, kann die ganze Zahl auch durch eine Reihe der Zeichen einer 256-Element-Menge dargestellt werden, deren Elemente die Ziffern der Werte 0 bis 255 repräsentieren und schriftlich durch alphanumerische, Interpunktions-, Kontroll-, Geldzeichen, nichtenglische Buchstaben oder andere Zeichen unterschieden werden.
Dabei schreibt man z. B. die 65-Wert-Ziffer mit das große A, das kleine a steht für die 97-Wert-Ziffer, die B stehen für die 66- und 98-Wert-Ziffern, das Zeichen @ für die 64-Wert-Ziffer, die geschriebene Ziffern 0 bis 9 für die Werte 48 bis 57, das große französische Ç für 128, das kleine deutsche ü für 129 usw.



Beispiele:

a) CD = C ⋅ 256 + D = 67 ⋅ 256 + 68 = 17220

b) A0Ça =
   A ⋅ 256⋅256⋅256 + 0 ⋅ 256⋅256 + Ç ⋅ 256 + a =
   65 ⋅ 256⋅256⋅256 + 48 ⋅ 256⋅256 + 128 ⋅ 256 + 97 =
   1093697633

Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Uni-Sonstiges"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
ev.vorhilfe.de
[ Startseite | Mitglieder | Impressum ]