Pourquoi “010” est égal à 8?
Ma simple question est de savoir pourquoi:
System.out.println(010|4);
imprime "12"? Je comprends opérateur de bits or mais pourquoi "010" est égal à 8? Ce n'est certainement pas un compliment 2 de la notification, de sorte comment décoder ce nombre?
C'est une octal littéral ! Plus précisément :
1*8^1 + 0*8^0
= 8
!OriginalL'auteur Java Adept | 2013-07-04
Vous devez vous connecter pour publier un commentaire.
Ont un look à la Java Langage De Spécification, Chapitre 3.10.1 Les Littéraux Entiers
Maintenant, vous devez comprendre pourquoi
010
est8
.OriginalL'auteur jlordo
L'un des principaux
0
dénote une octal valeur numérique de sorte que la valeur010
peut être décodé ainsi:010 = 1 * 81 + 0 * 80 = 8
OriginalL'auteur Reimeus
C'est parce que java le prend comme un octal littérale et donc produit 12. Essayez
System.out.println(10|4)
et le résultat est de 14. Parce que cette fois, il est pris comme séparateur décimal littérale.OriginalL'auteur tejas
Que tout le monde a mentionné ici que
010
est un Octal littéral Entier . Le premier0
précise que c'est une représentation octale . Valeur réelle sera :Maintenant revenir à la SOP :
L'application OU au niveau du Bit sur
010
et4
(en considérant uniquement les 4 derniers chiffres) =>OriginalL'auteur NINCOMPOOP