Как System.out.println() работает с двоичными данными?

Я не могу понять вывод кода ниже

пакет прошу;

import java.util.*;
import java.io.*;
public class Hell
{
    public static void main(String[] args)
    {
        System.out.println(10+010); //Prints 18
        System.out.println(010+010); //Prints 16
        System.out.println(010+10); //Prints 18
    }
}

Может кто-нибудь объяснить, пожалуйста?

2 ответа

Когда ты пишешь 010 его восьмеричный код... не бинарный

System.out.println(10+010); 
System.out.println(010+010); 
System.out.println(010+10); 

Эти строки выше эквивалентны:

System.out.println(10+8); // 010 being code for 8
System.out.println(8+8); 
System.out.println(8+10)

Это не двоичное суммирование восьмеричных чисел. В java число, начинающееся с 0, восьмерично. И вывод в десятичном виде.

010 = 8.

System.out.println(10+010); 

10 + 8

System.out.println(010+010);

8 + 8

System.out.println(010+10); 

8 + 10

Другие вопросы по тегам