Autor Beitrag
lisa1999
Hält's aus hier
Beiträge: 6



BeitragVerfasst: So 15.03.20 15:54 
gegeben x= 14526.
Hexadezimalwert von x und von -x in der Darstellung Vorzeichen Betrag
Die Wortbreite soll zwei Byte sein.

Das Ganze wäre in Hexadezimal : 38BE und in Binär : 11100010111110 aber das sind ja nur 14 Bits und bei 2 Bytes brauch ich ja 16.
Das Vorzeichen ist Positiv also kann eine 0 davor und kann ich dann einfach noch eine 0 hinter das Vorzeichen hängen damit ich :
in Binär : 0011100010111110 und in hexa 38BE bekomme?

Und bei -x dann eine 1 davor da es negativ ist.

Binär : 1011100010111110 und hexa:B8BE
?
ub60
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 762
Erhaltene Danke: 127



BeitragVerfasst: So 15.03.20 17:06 
Solange die Zahl positiv ist, füllt man von vorn bis zur gewünschten Länge mit Nullen auf.
Bei negativen Zahlen reicht es nicht, einfach die 1 als erstes Bit zu setzen. Siehe hier: Zweierkomplement.

ub60
lisa1999 Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: So 15.03.20 17:53 
user profile iconub60 hat folgendes geschrieben Zum zitierten Posting springen:
Solange die Zahl positiv ist, füllt man von vorn bis zur gewünschten Länge mit Nullen auf.
Bei negativen Zahlen reicht es nicht, einfach die 1 als erstes Bit zu setzen. Siehe hier: Zweierkomplement.

ub60


Hallo Ub60 danke für deine Antwort. Ich rede nicht von der Zweierkomplement Darstellung, sondern von der Vorzeichen Darstellung
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: So 15.03.20 19:36 
Meinst du also die Einerkomplementdarstellung?
38BE (hexadezimal) ist 0011100010111110 (binär), also es werden (wie in allen Zahlensystemen) vorne Nullen drangehängt, nur das höchstwertige Bit stellt das Vorzeichen dar (0: positiv, 1: negativ) => deine beiden Darstellungen in deinem Eingangsbeitrag sind also richtig.

Für diesen Beitrag haben gedankt: lisa1999
Oliver Marx
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 80
Erhaltene Danke: 18

Win 7 Prof.
Delphi XE Prof.
BeitragVerfasst: Mo 16.03.20 00:15 
user profile iconlisa1999 hatte ja schon das Zahlenformat mit Vorzeichen und Betrag (sign and magnitude) genannt. Diese entspricht allerdings nicht der Einerkomplementdarstellung. Bei der Einerkomplementdarstellungen wird jedes Bit des Betrags bei der Negation invertiert. -x wäre daher im Einerkomplement 1100011101000001.

Jetzt aber zur ursprünglichen Frage (und ich hoffe, ich habe deine Problem richtig verstanden):
Leider wird es oft verwechselt, dass die hexadezimale Darstellung nur eine Darstellung von Ziffern ist und daher (für sich) kein Vorzeichen kennt. Daher kann man anhand einer hexadezimalen Zahl nicht entscheiden, ob diese positiv oder negativ ist.
Um genau dieses Problem für Systeme zu lösen, die für eine Negation kein "-" voranstellen können, da sie nur "0" und "1" kennen, wird diese Information bei diesen in die Darstellung hineincodiert. War mir bei deiner Frage nicht ganz sicher, ob das soweit klar war.
Bei Vorzeichen und Betrag mit n Bits werden immer so viele Nullen vor den Betrag vorangestellt bis der Betrag n-1 Stellen hat und dann das Vorzeichen bei positiven Zahlen mit "0" und bei negativen mit "1" als MSB codiert, bzw. vor den Betrag vorangestellt.
Die anschließende Umwandlung in hex ist davon unabhängig.

Für diesen Beitrag haben gedankt: lisa1999