Ведущий 0 имеет значение в JavaScript

Мы слышали известную цитату: «Начальные 0 не влияют на значение, сколько бы их ни было!». Ну я просто выдумал эту цитату. Помимо шуток, ведущие 0 или 0 в JavaScript имеют значение! Например: console.log(019-013); угадайте, что он выведет? Если вы угадали «6», значит, это неправильно! Правильный ответ 8! Смущенный? Позволь мне объяснить. Большинство из нас изучали различные системы счисления в школах и университетах. Здесь играют две из этих систем счисления!

Системы счисления

Система счисления определяется как система записи для выражения чисел. Какая-то математическая запись для представления чисел.

Существует много систем счисления, но из них эти 4 являются наиболее часто используемыми системами счисления:

  1. Десятичная система счисления (Base-10)
  2. Двоичная система счисления (основание-2)
  3. Восьмеричная система счисления (Base-8)
  4. Шестнадцатеричная система счисления (основание-16)

В приведенном выше, например, console.log(019 — 013);, используются две системы счисления, а именно десятичная и восьмеричная системы. Восьмеричные числа – это числа с основанием 8 (вместо 10, как в десятичных числах). Это означает, что числа от 0 до 7 являются единственными допустимыми цифрами в этой системе. Но в приведенном выше примере 019 не может быть восьмеричным числом, не так ли? JavaScript использует начальный 0 для обнаружения восьмеричного числа. Среда выполнения JavaScript знает, что она не может быть восьмеричной, так как в ней есть цифры, которые недопустимы в восьмеричных числах, даже если они имеют начальный 0, поэтому она обрабатывает 019 как 19. С другой стороны, правая сторона содержит вполне допустимую восьмеричную цифру. число 013, которое равно 11 в десятичном формате.

Как преобразовать восьмеричное число в десятичное?

Обычное десятичное число — это сумма цифр, умноженная на 10^n, а восьмеричное — на 8^n. Чтобы преобразовать восьмеричное число в десятичное, умножьте каждую цифру на 10, возведенную в степень ее положения, а затем сложите результаты.
Пример преобразования восьмеричного числа в десятичное:
24(восьмеричное) = 2x8¹ + 4x8⁰ = 16 + 4 = 20

Заключение

Для обозначения восьмеричного числа используйте начальный «0». Затем компилятор сначала вычисляет десятичное значение восьмеричного числа (если присутствует действительное восьмеричное число), а затем выполняет арифметические действия с обоими операндами.