Как компьютеры конвертируются в двоичный файл?

Мне известен алгоритм, который я могу написать, чтобы преобразовать данное число в двоичное, а именно тот, в котором я делю на два, смотрю на остаток и так далее. Однако я упускаю что-то решающее.

Когда я пишу в своем коде:

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, который поддерживает двоичный текст), компилятору все равно придется преобразовать его в двоичное числовое значение.

Другие вопросы по тегам