Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.50/22: Рейтинг темы: голосов - 22, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 30.03.2020
Сообщений: 6

Как компьютер понимает десятичные числа

18.08.2020, 21:10. Показов 5034. Ответов 23
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Заранее извиняюсь за глупый вопрос.
Компьютеры оперируют двоичными числами, ни десятичными, ни восьмеричными, ни шестнадцатеричными, а именно двоичными. Но в большинстве языков программирования мы вводим десятичные числа. Я зочу узнать, как компьютер переводит десятичные числа в двоичные и наоборот НА САМОМ НИЗКОМ УРОВНЕ.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
using namespace std;
int abs(int x){
    return (x >= 0 ? x : - x);
}
int main(){
    int num;
    char binary[33];
    binary[32] = '\0';
    cin >> num;
    if(num < 0){
        num++;
        for(int i = 0; i < 32; i++){
            binary[31 - i] = '1' - abs(num % 2);
            num /= 2;
        }
    }else{
        for(int i = 0; i < 32; i++){
            binary[31 - i] = '0' + num % 2;
            num /= 2;
        }
    }
    cout << binary;
    return 0;
}
В этом коде компьютер автоматически переводит введённое десятичное число в двоичное, и потом мы переводим его в строку. Но все равно не понятно как компьютер это делает.

Допустим у нас есть целое число i и число двойной точности d.
C++
1
2
3
4
5
6
7
#include <iostream>
using namespace std;
int main(){
    int i = 112;
    double d = 153.48571;
    return 0;
}
Вопрос: как КОНКРЕТНО и на каком этапе компиляции происходит перевод этих чисел в двоичные.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.08.2020, 21:10
Ответы с готовыми решениями:

Как считать десятичные числа?
Как считать число из текстового окна вне зависимости от того точкой или запятой выделена целая часть ?

Как компьютер понимает, что он подключен к интернету?
Интернет - это объединение всех компьютеров в одну сеть, чтобы информацию из одного компьютера можно было отправить во все остальные и т....

Как считать из файла двоичные числа и перевести их в десятичные?
Задали написать программу на языке Си, информации на лекциях по этим темам конечно же не было и задали это в виде проекта который надо...

23
738 / 705 / 110
Регистрация: 29.05.2015
Сообщений: 4,362
22.08.2020, 07:46
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от StupidIdiot Посмотреть сообщение
AndryS1, этот код подразумевает, что компьютер перевёл число из десятичной в двоичную. А я пытаюсь понять как компьютер это делает. Ваш же код лишь покажет мне результат перевода, что мне не нужно
Это делает не компьютер. Компьютер не понимает ничего, кроме нулей и единиц. Это делает программа, которая показывает нам содержимое памяти компьютера, или отправляет нашу цифру в память. В файле тоже записаны нули и единицы, которые могут быть прочитаны в память компьютера, или наоборот, из памяти записаны в файл. Наверное это делает операционная система, которая напрямую работает с памятью, портами и т.п.
1
"C with Classes"
2022 / 1404 / 523
Регистрация: 16.08.2014
Сообщений: 5,885
Записей в блоге: 1
22.08.2020, 08:00
Цитата Сообщение от StupidIdiot Посмотреть сообщение
Я зочу узнать, как компьютер переводит десятичные числа в двоичные и наоборот НА САМОМ НИЗКОМ УРОВНЕ.
Компьютер на самом низком уровне ничего не переводит.

Добавлено через 1 минуту
тебя наверное не самый низкий уровень интересует, перефразируй вопрос.

Добавлено через 6 минут
Цитата Сообщение от DrOffset Посмотреть сообщение
На примере компилятора clang: https://clang.llvm.org/doxygen... tml#l00999
это получается что на самом низком уровне компьютер одни двоичные данные конвертирует в другие
0
 Аватар для COKPOWEHEU
4150 / 2728 / 433
Регистрация: 09.09.2017
Сообщений: 12,101
22.08.2020, 08:14
Цитата Сообщение от StupidIdiot Посмотреть сообщение
Компилятор ли C, ассемблер ли переводит 2147483647 в, например, 01111111111111111111111111111111 (signed int).
Просто напишите свою реализацию перевода из текста (модель исходного кода) в машинное представление. То есть с клавиатуры вводите ТЕКСТ, например "123", проводите над ним манипуляции и он превращается в 0b01111011. Без использования готовых библиотек, естественно.
C
1
2
3
4
5
6
7
8
#include <stdio.h>
int main(){
  char buffer[100];
  int val;
  fgets(buffer, 99, stdin);
  //вот здесь будет ваш код преобразования строки buffer в число val
  printf("%d\n", val); //а это для проверки правильно ля сделали
}
Естественно, сам код преобразования я вам писать не буду и остальных прошу сделать так же. Потому что вы никогда не научитесь, если будете только читать чужие решения, не пытаясь самостоятельно думать.
0
653 / 466 / 183
Регистрация: 23.04.2019
Сообщений: 1,987
22.08.2020, 17:01

Не по теме:

del



Добавлено через 8 минут
Цитата Сообщение от StupidIdiot Посмотреть сообщение
Ваш же код лишь покажет мне результат перевода, что мне не нужно
а на какой перевод вы рассчитываете?
я могу вам написать перевод из текста в число с помощью сдвигов, вам это нужно?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.08.2020, 17:01

Вывести элементы вещественной матрицы как десятичные числа
Необходимо сгенерировать вещественную матрицу от -100 до 100, элементы должны быть представлены как десятичные числа (а точнее с точкой и...

Как считать целые и десятичные числа в Free Pascal?
как нужно правильно считать целые и десятичные числа в free pascal? так чтобы 0.3 + 0.2 = 0.5 , а не 5.000...E -0,001 ну или что-то...

как сделать так чтобы программа воспринимала отрицательные и десятичные числа?
помогите вот листинг unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,...

Напечатать все перестановки из 0 и 1 на n позиций. Отсортировать их как десятичные числа по убыванию
Добрый день! Нужна помощь в пояснении задачи. Программа рабочая, но сам ее не делал, не могу разобраться в коде. Хотелось бы увидеть...

Заменить во всей строке все римские числа на соответствующие десятичные числа
Напишите функцию, которая заменяет во всей строке все римские числа на соответствующие десятичные числа. Пример: Введите строку: В...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Новые блоги и статьи
Транслитерация текста с кириллицы на латиницу
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru