Java Datentyp Byte

tobias_2

Cadet 4th Year
Registriert
Nov. 2009
Beiträge
84
Hallo Com,

ich bin gerade ein wenig verwirrt.
Ich lerne gerade etwas zum Datentypen Byte.
Nun wird hier geschrieben, dass Byte die Zahlen -128 bis 127 enthält.
Das sind also die Zahlen die in einem Byte durch die Initialisierung gespeichert werden können. (richtig?)
Folglich steht dort, dass der Computer diese Zahlen dann in Bits mit 8 Stellen umwandelt und die erste Stelle für das Vorzeichen reserviert ist, also 0 für Plus oder 1 für Minus.

Dann sind hier so Beispiele, z.B. wie rechne ich einen Byte-Wert in Bit um.
Möglichkeit 1 – Komplementär:
Beispiel: -8
128 – 8 = 120 = 1111 1000

Was mich jetzt verwirrt, ist das diese "1111 1000" ist doch kein Bit sondern eine Binärzahl oder anders gesagt die Bitbelegung?!
Wenn man sagt 16 Bit, dann heißt das doch 16 Stellen auf denen 0 oder 1 stehen kann? Der Binärcode dazu könnte dann so aussehen: 0011 0101 1110 1111.

Eigentlich ist das ganze ja dann nur eine Umrechnung Dezimal (Mit Vorzeichen Minus) in Dual wenn ich mich nicht irre?
Obwohl es andersrum also Dual in Dezimal hier ja eig anders gemacht wird, da man dann von -128 hochrechnet, wenn die 1. Stelle eine 1 ist.. Also Dual in Dezimal und Andersrum nicht das Gleiche wie Bit in Byte-Wert?!?

Noch eine wichtige Frage: Ist Bitbelegung - Binärcode - Dualzahl das Gleiche?
Hoffentlich klingt das jetzt nicht dämlich.. ich denke ich bringe hier iwas durcheinander..
 
Verstehe jetzt das Problem nicht aus deinem Text, daher versuche ich einfach mal zu erklären wie man sich den Datentypen vorstellen kann.
Im Prinzip kannst du dir alle ganzzahligen Datentypen in Java wie eine Art Kreis vorstellen, auf dem die Zahlen angeordnet sind.
Ganz oben im Kreis fängt es mit der Null an (0000 0000, da byte 8 Bit hat um Zahlen abzuspeichern).
Dann wird nach oben gezählt bis man bei der 127 ankommt (0111 1111, größte positive Zahl für byte).
Jetzt wechselt das Vorzeichen und man ist bei der -128 (1000 0000).
Jetzt wird wieder weiter nach oben gezählt. Die -1 wäre dann alles auf 1 gesetzt (1111 1111).

byte.png

Btw: Du verlässt niemals diesen Kreis wenn du zwei byte Werte multiplizierst, addierst oder subtrahierst.
Wenn du zum Beispiel 127+1 rechnest, landest du auch bei -128.

Code:
public class ByteTest {
	public static void main(String[] args) {
		System.out.println((byte) (127 + 1));
	}
}
 
Zuletzt bearbeitet:
das hat zwar jetzt ein bisschen zum Verständnis im Allgemeinen beigetragen, aber meine Fragen bleiben noch offen.

In meinen Unterlagen steht was von Umrechnung Bit in Byte-Wert und umgekehrt.
also z.B. 0001 0101 ist in meinen Unterlagen als Bit beschrieben, obwohl es ja eig die Bitbelegung von 8 Bit ist?

Deswegen entstand erstmal eine Unklarheit mit den Begrifflichkeiten und ich kam zur Fragestellung ob:
Bitbelegung, Binärcode und Dualzahl das Gleiche ist?
 
Genaugenommen sind alle drei Begriffe was verschiedenes, aber im allgemeinen geht man vom Zweierkomplement aus, das bedeutet.
Bitbelegung = Dualzahl im Zweierkomplement Vorzeichenerweitert auf die passende Breite
Binärcode = Bitbelegung bloß allgemeiner, da nicht unbedingt fester Breite.

So ist mein Verständnis, allerdings ist es in der Praxis (fast) wurscht, da man aus dem Kontext eigentlich immer sofort erkennt, was gemeint ist.
 
Zurück
Oben