2017-04-17 3 views
0

J'essaie de déclarer un nombre entier en octets. Ce que je veux dire est: j'essaie de déclarer int a = 4 comme int a = 0100 (je l'ai raccourci ici à 4 bits pour plus de simplicité.) Voici le code que j'ai utilisé et qui me donne une sortie inattendue.Représentation d'un nombre entier en bits: erreur

public class class4A_d { 
public static void main(String[] args) { 
    System.out.println("Hello world,this is the main function "); 
    int q1= 00000100; //8 bits 
    int q2 = 00000000000000000000000000000100; //32 bits 
    System.out.println("q1 and q2 are respectively "+ q1 + ":" + q2); //q1= 64,q2 =64 
             } 
         } 

je sais magasins java entiers que le nombre de 32 bits en deux, s complètent à l'extrémité arrière avec un poids de chaque bit progresse de la manière suivante: 2 (^ 0), 2 (^ 1), 2 (^ 2) ..... etc. Mais ici, il semble que les poids sont de la manière suivante: 8 (^ 0), 8 (^ 1), 8 (^ 2) ..... etc. Quelqu'un peut-il expliquer cela?

+0

double possible de [En Java, je peux définir un nombre entier constant au format binaire?] (Http://stackoverflow.com/questions/867365/in-java-can-i-define-an-integer -constant-in-binary-format) – Marged

+0

@Marged ..J'avais déjà vu le lien que vous avez mentionné, il ne répond pas à ma question mate. –

+0

Votre peu constante est juste faux – Marged

Répondre

2

Lorsque vous déclarez un int, vous avez la possibilité de le faire en décimal, octal, hexadécimal et binaire.

Binaire:
Les constantes binaires int commencent par 0b, par ex.

int binary = 0b00000100; //decimal: 4 

Octal:
Octal constantes int commencent par 0, alors soyez prudent car il peut arriver que vous les utilisez accidentellement, par exemple

int octal = 0127; //decimal 87 

Hexadécimal: constantes hexadécimaux int commencent par 0x, par exemple

int hex = 0xFF; //decimal 255 
+0

Merci beaucoup! –

+0

Glad je pourrais aider –

+0

darn venait de poster ceci;) – HaydenKai