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

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

18.08.2020, 21:10. Показов 4933. Ответов 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
737 / 704 / 110
Регистрация: 29.05.2015
Сообщений: 4,348
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
4148 / 2726 / 433
Регистрация: 09.09.2017
Сообщений: 12,081
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
Ответ Создать тему
Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru