Bitfolger eines Bytwertes bestimmen

Hi,

habe zwar einen Rechner gefunden im Internet.. aber nicht wie ich das per Hand bestimme.

Durch welche Bitfolge wird der Int-Wert -9 in Java gespeichert?

Weiß jemand wie man das per hand ausrechnet Stehe ein wenig auf dem Schlauch...
 
Hmm...

wie mache ich es denn bei den negativen Zahlen Und was verändert sich wenn ich dann einen Shortwert binär darstellen soll...

kann zwar jetzt alles aus dem Dezimah in andere berechnen... aber nicht die negativen und verstehe eben nicht was sich dann ändern soll wenn ich -7 für int und short wert als bitfolge darstellen soll?

weiß echt nicht wie ich das amchen soll...
 
Hallo,

negative Integer Werte werden in der Regel als 2er Komplement der absoluten Werte dargestellt.
http://de.wikipedia.org/wiki/Zweierkomplement

schau mal hier:
Java:
package de.tutorials;
public class BytesExample {
	public static void main(String[] args) {
		System.out.println("                            " + Integer.toBinaryString(9));
		System.out.println(Integer.toBinaryString(~9)); //Komplement -> ~ kehrt alle Bits um => Aus 1 wird 0 und aus 0 wird 1
		System.out.println(Integer.toBinaryString(~9+1)); //2er Komplement = Komplement + 1
		System.out.println(Integer.toBinaryString(-9));
	}
}

Ausgabe:
Code:
                            1001
11111111111111111111111111110110
11111111111111111111111111110111
11111111111111111111111111110111

Gruß Tom
 
Hi,

ja diesen Algoritzhmus habe ich auch gefunden... allerdings würde ich das wie schon oben erwähnt ganz gerne auf papier rechnen wollen.

Kann jemand das mal vorrechnen Wäre super!
 
hmmm ich hoffe meine Erinnerung lässt mich nun nicht im Stich:

heißt nicht 2er-Komplement (Umkehrung von binäre positive in binär negative Zahl)
  1. invertiere Bitfolge
  2. zähle einen hinzu
Also genau das, was Tom schon in seinen Code ausgedrückt hat.
 
Hallo,

also ich verstehe es immer noch nicht... finde jemand mit mir erbarmen und rechne es Schritt für Schritt...

für positive Zahlen ist es ja kein Thema:

7:2 = 3 1
3:2= 1 1
1:2=0 1

Also Antwort 111

Aber für negative?

Wie rechne ich denn so ähnlich dann für die -7 aus?
 
schau doch mal auf Toms Beispiel.

Du siehst da also eine Menge von 1'en
Es hängt also davon ab wie groß Deine Zahlendarstellung (manchmal auch Zahlenraum genannt) ist.
nehmen wir mal eine 8 Bit Zahl an
dann ist -7 folglich: 8-Bit +7; bit-invertiert; +1
also
Code:
 0000 0111         | nu bit invertieren
 1111 1000         | nu +1
 1111 1001         | nu fertisch
Bei einer 16 Bit Zahl wäre es

Code:
0000 0000 0000 0111         | nu bit invertieren
1111 1111 1111 1000         | nu +1
1111 1111 1111 1001         | nu fertisch
32 Bit und 64 Bit überlasse ich mal Deiner Phantasie, da ich zu faul bin lauter 0'en und 1'en zu tippen

Ich hoffe ich kam verständlich rüber

Grüße

Takidoso

PS: Du fragst vermutlich Dich jetzt warum das so ist, stimmts? Falls ja gebe ich Dir auch gerne darüber Auskunft.
 
Zuletzt bearbeitet:
Ja in der Tat das frage ich mich

8 Bit = 1 Byte
16 Bit = Short
32 Bit = Int

richtig?

sprich wenn ich die 7 hätte was ja binär 111 ist dann wäre das eine Bitfolge für
1) Byte von
0000 0111

2) Short
0000 0000 0000 0111

3) Int
0000 0000 0000 0000 0000 0000 0000 0111

Richtig?

Dann das ganze Inventiert ergibt:

1) 0000 0111
inventiert 1111 1000
und +1: 1111 1001


2) 0000 0000 0000 0111
inventiert: 1111 1111 1111 1000
und +1: 1111 1111 1111 1001

3) 0000 0000 0000 0000 0000 0000 0000 0111
inventiert: 1111 1111 1111 1111 1111 1111 1111 1000
und +1: 1111 1111 1111 1111 1111 1111 1111 1001

Hier also noch ein von mir gerechnetess Beispiel:

Geben Sie die Bitfolge an, durch die der Byte-Wert -23 in Java gespichert wird.
Zahlenraum = 8!

23:2=11 1
11:2 = 5 1
5:2=2 1
2:2= 1 0
1:2 = 0 1

Also in Bitfolge:
0001 0111

Und inventiert:
1110 1000

und +1:
1110 1001

Richtig
 
Zuletzt bearbeitet:
ich denke Du hast das Prinzip verstanden :)

hier noch 2 Tips für die Kontrolle.
  1. wenn Du die positive zahl mit der negativen Zahl zusammen adierst, kommt magischerweise 0 raus :)
  2. Wenn Du keine Lust hast manuell zu rechnen, nimmst Du einfach den Taschenrechenr von Windows und stellst ihn auf Ansicht->wissenschaftlich, da kannst Du nach herzenslust binär, dezimal und Hexadezimal umrechnen lassen ;)

Sei froh, dass Du nicht zu Fuß binäre Divisionen rechnen musst (grusel)

in diesem Sinne

Takidoso
 

Neue Beiträge

Zurück