2016-11-25 3 views
0

Ich habe einen Zweifel in dem folgenden Code:Warum ist die Ausgabe dieses Programms -4? (Java - Datentypen Byte)

public class test { 
public static void main(String args[]) { 
    byte x = 3; 
     x = (byte)~x; 
     System.out.println(x); 

    } 

} 

Der Ausgang ist: -4

+3

Verstehen Sie, was binäre Negation ist? Was haben Sie von der Ausgabe erwartet? – RealSkeptic

+0

3 ist 011 in der Binärwelt. Seine Negation ist 100, was 4 in der Basis 10 und in Java wird es nicht (~) von einem 32 Bit langen 011. – Vinay

+1

@Vinay, die Negation von 011 in einem Byte ist 11111100, nicht 100. – RealSkeptic

Antwort

1

Binary Negation numver ist die gleiche wie unter negativen number+1. Hier ist warum:

Binär 3 ist 0011 (führende Bits übersprungen, um es lesbarer zu machen).

Binäre Negation ~3 ist 1100.

nun binäre 4 0100

-4 Um zu bestimmen, schreiben Sie zunächst binäre Negation 1011.

und fügen Sie dann ein (siehe wiki) 1100

Verwandte Themen