Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
@Ark: Deins ist mindestens genauso umständlich, und in gewisser Hinsicht nichtmal das, was gewünscht ist: Durch das anfängliche shiften nach links sollte genau das erreicht werden, was du (allerdings NUR bei der Ausgabe durch das & 0xFF erreichst. Dass dabei implizit nach int gecastet wird, ändert nichts daran, dass das Ergebnis (mybyte[3]) "falsch" ist.
"Falsch" ist es aber garnicht: byte hat einen Wertebereich von -128 bis 127. Und in jedem byte werden 8 bits gespeichert. Es kann also einfach sein, dass die Zahlen, die da rauskommen, negativ sind. Die "richtige" Zahl (232) kann einfach als byte nicht dargestellt werden...
Man kann sich ja mal die 4 bytes ausgeben lassen:
Code:
class Berechnung
{
public static void main(String args[])
{
berechnung();
}
public static void berechnung() {
int foo = 1000;
byte[] mybyte = new byte[4];
System.out.println(bin(foo));
mybyte[0] =(byte)( foo >> 24 );
mybyte[1] =(byte)( (foo << 8) >> 24 );
mybyte[2] =(byte)( (foo << 16) >> 24 );
mybyte[3] =(byte)( (foo << 24) >> 24 );
System.out.println(mybyte[0]);
System.out.println(mybyte[1]);
System.out.println(mybyte[2]);
System.out.println(mybyte[3]);
}
public static String bin(int n)
{
String result = "";
for (int i=31; i>=0; i--)
{
if ((n & (1<<i)) == 0)
{
result+="0";
}
else
{
result +="1";
}
if (i%8==0) result+=" ";
}
return result;
}
}
EDIT: Nachtrag @Nathy: Du kannst die bytes auch als chars speichern. Der läßt sowieso nur positive Zahlen zu. Wenn du später aber die bytes weiterverarbeiten willst (z.B. in eine Datei schreiben o.ä. solltest du dich mit der negativen zal abfinden :wink: )
Danke für die Antwort.
Jetzt habe ich an Stelle von byte, int eingesetzt. Dies gibt aber genau dieselbe Ausgabe? Wieso das?
int kann ja mehr als 128 speichern.
Der >>-Operator kopiert das Vorzeichen (d. h., es bleibt erhalten). Außerdem verstehe ich immer noch nicht, warum du deine Zahlen hin- und herschiebst, obwohl einmal Schieben mit UND-Verknüpfung es auch getan hätte, zumal bei einer gut durchdachten UND-Verknüpfung das Vorzeichen automatisch rausfällt. ???:L
Beschäftige dich mal näher mit dem Zweierkomplement und Binärarithmetik überhaupt.