Как компьютеры конвертируются в двоичный файл?
Мне известен алгоритм, который я могу написать, чтобы преобразовать данное число в двоичное, а именно тот, в котором я делю на два, смотрю на остаток и так далее. Однако я упускаю что-то решающее.
Когда я пишу в своем коде:
int x = 56;
Компьютер хочет преобразовать 56 в двоичный файл, потому что это единственный язык, который он знает, но он не может разделить 56 на 2, потому что 56 не является двоичным. У меня вопрос, как компьютер это делает? Преобразует ли он каждую цифру в двоичную, умножает на 10 и складывает их вместе или есть более быстрый способ?
2 ответа
Компилятор использует алгоритм для преобразования строки десятичных цифр "56" в числовое значение, которое в конечном итоге сохраняется как строка битов "00111000". "56" можно выложить в память так:
Address Value Comment
...
0xabab1212 0x35 This is the hex representation of the ASCII code for "5"
0xabab1213 0x36 This is the hex representation of the ASCII code for "6"
0xabab1214 0x00 Assuming null-terminated strings as in C
...
Представление числового значения будет выглядеть так:
Address Value Comment
...
0xabab1220 0x38 The hex representation of the decimal number 56
...
Шестнадцатеричные значения 0x35
, 0x36
а также 0x38
это просто сокращенные обозначения для основных битовых последовательностей 00110101
, 00110110
а также 00111000
, это то, что аппаратное обеспечение на самом деле работает.
Главное в том, что на компьютере не существует такой вещи, как "число". Есть только строки - которые мы можем использовать для представления чисел - и все вычисления выполняются путем манипулирования строками. Вы вводите строку, компилятор генерирует строку, а аппаратное обеспечение сохраняет строку.
Компьютер работает только в двоичном формате. Когда вы положите
int x = 56;
в вашем коде это просто текст. При компиляции текст 56 будет преобразован в двоичное ЦИФРОВОЕ значение.
Существует разница между двоичным числовым представлением и двоичным текстом. это
111000
а также
56
Текстовые представления одного и того же числа. Если у вас есть первый в программе (например, Ada, который поддерживает двоичный текст), компилятору все равно придется преобразовать его в двоичное числовое значение.