Другие языки программирования и технологии

Как при восьмеричном коде компьютер понимает сколько знаков (цифр) в числе?

В двоичной, десятичной, шеснадцатеричной системах в каждом числе определенное кол-во знаков, а в восьмеричной числам могут быть записаны и одной цифрой и двумя и более. В программе ведь не стоят пробелы, цифры идут подряд. Как тогда компьютер поймет, что число например 13 и не два числа 1 и 3?
Есть понятие - тип данных. Каждая команда работает с определённым типом. Базовых типов мало, остальные - производные, составные. Есть операции с целыми числами и числами с плавающей точкой и они не смешиваются (аргументы все одинакового типа) . Ранее эти операции выполняли физически разные чипы. Ессно, целочисленная арифметика быстрее. Далее, у типа есть длина. Т. е. целое число может храниться в одном байте (от +/- 128)/2/4/8 (до 2х в офигительной степени) , а float в 4х или 8и байтах. Внутри float числа есть место битов порядка, мантиссы и их знаков. Остальное, как написали выше.

т. е. команда читает не последовательность цифр 1,3 и др, а считывает байт, в котором записано число 13х10 (00001101х2)
ТТ
Тимур Тимашев
90 252
Лучший ответ
Полная дурь! Восьмеричная система НИЧЕМ не отличается от систем с другим основанием. Тот же принцип - цифры от нуля и до (основание системы - 1). А если лично ты по каким-то "глубоким соображениям" вставляешь пробел в ЧИСЛО, то это твои проблемы. Гарантирую, система тут ни при чём!
R Абушаев
R Абушаев
70 632
компьютер считает только в двоичной системе счисления (остальные - это уже форматы отображения этих чисел) .
В других системах счисления он не считает. То есть, если ты задашь число 13, он преобразует его в двоичную систему счисления (на этапе компиляции или на этапе работы программы, смотря где задаёшь) . И когда будешь выводить результат на экран - он преобразует двоичное число в нужную систему счисления и каждую цифру этого числа в соответствующие ASCII-коды символов.
Во-первых, в компьютере все числа хранятся в двоичной системе. Во вторых, под каждую двоичную цифру отводится один бит. Следующий бит - следующая цифра.
Павел Лопаткин
Павел Лопаткин
62 408
как ты числа не записывай, все будет хранится в двоичной системе. а по вопросу: 13 он поймет так как вы составите алгоритм. в ЯП для различия используется свои способы:
если вы напишите 10, то по умолчанию это будет 10 в десятичной. если 10b, то это будет двоичная система, если 10h или 0х10 то шестнатеричная, и т. п. . .а если вы получаете строку с числовыми литералами, то это у же ваша забота, как понимать число...
Мaik Коваленко
Мaik Коваленко
55 818
В компьютере все данные закодированы в байтах, а байт это восемь битов (то есть в одном байте всего может быть 8 ноликов или единиц) . Также их можно представить с помощью двух цифр шестнадцатеричной системы счисления, то есть максимально возможное число это 11111111 в двоичной, 255 в десятичной и FF в шестнадцатеричной. К большему значению он обратится не может. А чтобы обратиться к числу, которое больше этого, процессор читает не один байт, а несколько. То есть программист указывает расположение первого байта в оперативной памяти (адрес) и сколько байтов нужно прочитать. Преобразуются байты в обыкновенное число очень просто: считываются эти самые байты (справа налево!!!) , и приписываются к друг другу. Например: есть в оперативной памяти байты (я укажу в шестнадцатеричной системе, потому что так наиболее удобней) 07 32 1D 00. У байта 07 адрес к примеру 345, у 32 346 и так по порядку. Процессор хочет прочитать число с адресом байта 345 и размером 4 байта. Он их читает, меняет местами и приписывает друг к другу. Получается 0011D3207. Нули в начале можно убрать, поэтому убираем и в десятичной системе это число 18690567. И процессор продолжает работу с этим числом. А записывает числа процессор по обратному алгоритму, я тебе писать не буду, если надо - сам составишь.

Похожие вопросы