Как 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