Другие языки программирования и технологии
Как при восьмеричном коде компьютер понимает сколько знаков (цифр) в числе?
В двоичной, десятичной, шеснадцатеричной системах в каждом числе определенное кол-во знаков, а в восьмеричной числам могут быть записаны и одной цифрой и двумя и более. В программе ведь не стоят пробелы, цифры идут подряд. Как тогда компьютер поймет, что число например 13 и не два числа 1 и 3?
Есть понятие - тип данных. Каждая команда работает с определённым типом. Базовых типов мало, остальные - производные, составные. Есть операции с целыми числами и числами с плавающей точкой и они не смешиваются (аргументы все одинакового типа) . Ранее эти операции выполняли физически разные чипы. Ессно, целочисленная арифметика быстрее. Далее, у типа есть длина. Т. е. целое число может храниться в одном байте (от +/- 128)/2/4/8 (до 2х в офигительной степени) , а float в 4х или 8и байтах. Внутри float числа есть место битов порядка, мантиссы и их знаков. Остальное, как написали выше.
т. е. команда читает не последовательность цифр 1,3 и др, а считывает байт, в котором записано число 13х10 (00001101х2)
т. е. команда читает не последовательность цифр 1,3 и др, а считывает байт, в котором записано число 13х10 (00001101х2)
Полная дурь! Восьмеричная система НИЧЕМ не отличается от систем с другим основанием. Тот же принцип - цифры от нуля и до (основание системы - 1). А если лично ты по каким-то "глубоким соображениям" вставляешь пробел в ЧИСЛО, то это твои проблемы. Гарантирую, система тут ни при чём!
компьютер считает только в двоичной системе счисления (остальные - это уже форматы отображения этих чисел) .
В других системах счисления он не считает. То есть, если ты задашь число 13, он преобразует его в двоичную систему счисления (на этапе компиляции или на этапе работы программы, смотря где задаёшь) . И когда будешь выводить результат на экран - он преобразует двоичное число в нужную систему счисления и каждую цифру этого числа в соответствующие ASCII-коды символов.
В других системах счисления он не считает. То есть, если ты задашь число 13, он преобразует его в двоичную систему счисления (на этапе компиляции или на этапе работы программы, смотря где задаёшь) . И когда будешь выводить результат на экран - он преобразует двоичное число в нужную систему счисления и каждую цифру этого числа в соответствующие ASCII-коды символов.
Во-первых, в компьютере все числа хранятся в двоичной системе. Во вторых, под каждую двоичную цифру отводится один бит. Следующий бит - следующая цифра.
как ты числа не записывай, все будет хранится в двоичной системе. а по вопросу: 13 он поймет так как вы составите алгоритм. в ЯП для различия используется свои способы:
если вы напишите 10, то по умолчанию это будет 10 в десятичной. если 10b, то это будет двоичная система, если 10h или 0х10 то шестнатеричная, и т. п. . .а если вы получаете строку с числовыми литералами, то это у же ваша забота, как понимать число...
если вы напишите 10, то по умолчанию это будет 10 в десятичной. если 10b, то это будет двоичная система, если 10h или 0х10 то шестнатеричная, и т. п. . .а если вы получаете строку с числовыми литералами, то это у же ваша забота, как понимать число...
В компьютере все данные закодированы в байтах, а байт это восемь битов (то есть в одном байте всего может быть 8 ноликов или единиц) . Также их можно представить с помощью двух цифр шестнадцатеричной системы счисления, то есть максимально возможное число это 11111111 в двоичной, 255 в десятичной и FF в шестнадцатеричной. К большему значению он обратится не может. А чтобы обратиться к числу, которое больше этого, процессор читает не один байт, а несколько. То есть программист указывает расположение первого байта в оперативной памяти (адрес) и сколько байтов нужно прочитать. Преобразуются байты в обыкновенное число очень просто: считываются эти самые байты (справа налево!!!) , и приписываются к друг другу. Например: есть в оперативной памяти байты (я укажу в шестнадцатеричной системе, потому что так наиболее удобней) 07 32 1D 00. У байта 07 адрес к примеру 345, у 32 346 и так по порядку. Процессор хочет прочитать число с адресом байта 345 и размером 4 байта. Он их читает, меняет местами и приписывает друг к другу. Получается 0011D3207. Нули в начале можно убрать, поэтому убираем и в десятичной системе это число 18690567. И процессор продолжает работу с этим числом. А записывает числа процессор по обратному алгоритму, я тебе писать не буду, если надо - сам составишь.
Похожие вопросы
- Узнать сколько знаков после запятой в числе? Visual Basic
- дано натуральное 5 значное число n.Сколько раз в данном числе встречаются цифры 4 или 8?
- программирование pascal (паскаль) алгоритм с перестановкой цифр в числе
- Почему в компьютере вся информация переводится в двоичный код? Почему компьютер "понимает" только его?
- Объясните, что значит "найти цифры трехзначного числа" - язык Паскаль. Не врубаюсь совсем...
- 1. Составить программу, определяющую совпадают ли первая и вторая цифры трехзначного числа. и ещё 4 в пояснении
- Как компьютер понимает бинарный код? Как он "видит" единицу и ноль?
- Создать программу на С++:Вывести случайным образом ряд из 15 цифр. Задать число и подсчитать количество таких цифр в выв
- Помогите с лабораторной на языке С. Программа должна рассчитать сколько раз изменился знак во вводимых числах.
- Вводится число N, а затем N чисел. Подсчитайте, сколько среди данных N чисел нулей.