Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.96/148: Рейтинг темы: голосов - 148, средняя оценка - 4.96
50 / 6 / 2
Регистрация: 15.07.2010
Сообщений: 112

Программа для перевода чисел из 10 системы в 2

29.08.2010, 22:56. Показов 28594. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Народ помогите написать программу для перевода чисел из 10 системы в двоичную
В консоле
Если надо я могу прислать листинг программы которую я пытался создать
Заранее спасибо
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.08.2010, 22:56
Ответы с готовыми решениями:

Программа для перевода чисел из 16 системы в 2 на C++
Нужно написать программу, в которой пользователь вводит число, и оно переводится из 16 в 2. Написать желательно самым понятным и простым...

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

Программа для перевода из одной системы счисления в другую.
Помогите пожалуйста написать программу для перевода чисел из одной системы в другую. Используемые системы счисления: от двоичной до...

20
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
29.08.2010, 22:57
JerryJackson, Кидай листинг
1
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
29.08.2010, 22:57
Программа перевода числа из 10 СС в 2 СС
1
50 / 6 / 2
Регистрация: 15.07.2010
Сообщений: 112
29.08.2010, 23:02  [ТС]
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
/ lab1.cpp : Defines the entry point for the console application.
//
 
#include "stdio.h"
 
void main()
{
    //Переменные для исходных данных
    int x = 0, y = 0, m = 0, n = 0;
 
    //Переменные для результатов
    int x_new = 0, y_new = 0;
 
    //Временные переменные
    unsigned int mask;
    const unsigned int all_bits_up = -1; // -1 записуется в памяти как все биты равные 1 [url]http://ru.wikipedia.org/wiki/Дополнительный_код_(представление_числа[/url])
 
    //запрашиваем ввод
    printf("input values for 'x', 'y', 'm' and 'n' separated by spaces\nwaiting for input# ");
    //считываем ввод
    scanf("%d%d%d%d",&x, &y, &m, &n);
    
    //выводим исходные данные
    printf("\n\nYou've just inputed next values:\n x = '%d'\n y = '%d'\n m = '%d'\n n = '%d'\n", x, y, m, n);
 
    //подготавливаем маску
    //"a (*)= b" это то же самое что и "a = a (*) b" - вместо (*) подставить нужный оператор
    mask = all_bits_up; //включаем все биты
    mask <<= n;         //сдвигаем влево на n бит
    mask ^= -1;         //инвертируем (исключающее ИЛИ с универсальным множеством)
    mask <<= m;         //сдвигаем влево на m бит
 
    //Дальше нужно вырезать нужные биты их 'x' и 'y' и склеять их в 'x_new'
 
    //1)  0xCCCCCCCC  2)  0xAAAAAAAA  3)  0xCCCC00CC
    //   &               &               |
    //    0xFFFF00FF      0x0000FF00      0x0000AA00
    //   =               =               =
    //    0xCCCC00CC      0x0000AA00      0xCCCCAACC
 
 
    //mask ^ all_bits_up - инвертация маски
    //x & ( mask ^ all_bits_up ) - все биты из 'x' которые равны '1' в инвертированой маске
    //y & mask - все биты их 'y' которые равны '1' в неинвертированой маске
    //x & ( mask ^ all_bits_up ) | y & mask - наложение результата друг на друга
    x_new = x & ( mask ^ all_bits_up ) | y & mask;
 
 
    //теперь нужно получить маску из единиц и шести нулей в конце
    mask = all_bits_up; //все единицы
    mask >>= 6;         //сдвигаем на 6 вправо, что бы получить нули в конце
    y_new = y | ( mask ^ all_bits_up ); //логическое ИЛИ с маской оставит исходные биты в тех местах где в маске '1' и перетрет нулем в тех где '0'
 
    //теперь нужно вывести побитово в столбик старые и новые значения
    for (unsigned int i = 0 ; i < sizeof(int) * 8 ; i++)
    {
        //сдвигаем единичку на текущее значение i что бы проверить какое значение текущего бита каждого значения
 
        // 1010 & 0010 != 0 но 1001 & 0010 == 0
        int next_bit_x      = ( ( 1 << i ) & x) ? 1 : 0;
        int next_bit_y      = ( ( 1 << i ) & y) ? 1 : 0;
        int next_bit_x_new  = ( ( 1 << i ) & x_new) ? 1 : 0;
        int next_bit_y_new  = ( ( 1 << i ) & y_new) ? 1 : 0;
 
        if (i == 0)
        {
            printf("\nx(old): %d y(old): %d x(new): %d y(new): %d\n", 
                next_bit_x,
                next_bit_y,
                next_bit_x_new,
                next_bit_y_new);
        }
        else
        {
            //каждые четыре строчки выводим разделитель
            if ( i % 4 == 0) //оператор % это остаток от деления по модулю
            {
                printf("[%d-%d]\n", i, i + 3);
            }
 
            printf("        %d         %d         %d         %d\n", 
                next_bit_x,
                next_bit_y,
                next_bit_x_new,
                next_bit_y_new);
        }
    }
}
Добавлено через 41 секунду
Лабораторная работа№1. Вариант 1 – (2009)
Написать программу на языке C++, читающую со стандартного ввода 4 деся-
тичных числа x, y,m, n. Все смещения будут указываться начиная с младшего
бита, начиная с 0.
Из числа y n бит начиная с m-го поместить в соответствующие биты в x, и
установить в ‘1’ значения 6 старших бит в y.
Программа должна вывести все исходные данные в десятичном виде,
исходные и полученные значения x, y в двоичном виде в столбик, причём
справа от числа должно быть выведено имя соответствующей переменной.
В программе не должно быть более одного цикла. Не следует использовать
классы и библиотеки для работы с битовыми объектами. Рекомендуется не
изменять исходные переменные, следует определить выходные и временные
переменные. Программа должна быть корректной вне зависимости от коли-
чества бит в целом числе на данной архитектуре.

Добавлено через 39 секунд
вот листинг но программа работает неправильно
а иногда вообще не работает
0
 Аватар для iama
1360 / 988 / 119
Регистрация: 30.07.2010
Сообщений: 5,297
29.08.2010, 23:03
JerryJackson, рабочий пример:
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
26
#include <stdio.h>   
#include <conio.h>   
#include <math.h>   
  
void dvoich(int x1)   
{  
    int i, b;  
    long c = 0;  
    for(i=0;x1 > 0;i++)  
    {
        b = x1 % 2;  
        x1 = (x1-b)/2;
        c += b * pow(10,i);
    }
 
    printf("\nDvoichnoe chislo: %d",c);   
}   
  
void main()   
{
    int a;  
    printf("Vvedite desyatichnoe chislo:");  
    scanf("%d",&a);  
    dvoich(a);  
    getch();  
}
2
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
29.08.2010, 23:06
Лучший ответ Сообщение было отмечено как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <string>
#include <algorithm>
 
int main()
{
   int n;
   std::cout<<"Enter n: ";
   std::cin>>n;
   std::string Bin="";
   while(n>0)
   {
      if(n%2)
         Bin+='1';
      else
         Bin+='0';
      n/=2;
   }
   std::reverse(Bin.begin(), Bin.end());
   std::cout<<Bin;
   return 0;
}
iama, Вашу программу не схавала 2005 VS. Не стоит использовать такую версию функции pow(int, int). Лучше уж pow(double, int). То есть в данном случае pow(10.0, i).
4
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
29.08.2010, 23:08
iama, как будет работать ваш код для числа 2048? Правильно - он упадет.
Lavroff, а как же битовые операции?
JerryJackson, перейдите по ссылке в 3 посте и пользуйтесь поиском
1
50 / 6 / 2
Регистрация: 15.07.2010
Сообщений: 112
29.08.2010, 23:11  [ТС]
спасибо всем огромное
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
29.08.2010, 23:12
M128K145, А собственно зачем?)
1
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
29.08.2010, 23:12
Lavroff, а зачем применять арифметику, если можно сделать битовый сдвиг?
1
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
29.08.2010, 23:29
M128K145, Можно. Но если не критично для памяти/времени работы/всего остального, то зачем оптимизировать и делать код несколько менее понятным?

C++
1
2
3
4
5
6
7
8
   while(n>0)
   {
      if(n&1)
         Bin+='1';
      else
         Bin+='0';
      n>>=1;
   }
Только зачем? Разве это более понятно? Особенно тем кто не знает побитовые операции?
0
Эксперт JavaЭксперт С++
 Аватар для M128K145
8384 / 3617 / 419
Регистрация: 03.07.2009
Сообщений: 10,709
29.08.2010, 23:37
А что в этом коде непонятного или сложного?
C++
1
2
3
4
for(i = 31; i >= 0; --i)
     Bin += (char)(((chislo >> i) & 1) + 48);
     // или так
     // Bin += (chislo >> i) & 1 ? '1' : '0';
0
Эксперт С++
 Аватар для fasked
5045 / 2624 / 241
Регистрация: 07.10.2009
Сообщений: 4,310
Записей в блоге: 5
29.08.2010, 23:46
Цитата Сообщение от M128K145 Посмотреть сообщение
А что в этом коде непонятного или сложного?
Ну вот число 48 лучше все таки записать как символ '0'.
Может быть еще i = sizeof(T) * 8 - 1. ну это уже не суть. Предварительно выделив в шаблонную функцию
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
29.08.2010, 23:48
M128K145, Вцелом ничего. Но новичка запутает на 80%
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
30.08.2010, 00:07
C++
1
2
3
4
5
6
7
8
9
10
const int a = 0x7145;
 
int main(){
  unsigned i,j = 1 << 8*sizeof(int)-1;
  for( i=0;i<8*sizeof(int);++i ){
    printf( "%d", (a & j) == 0 ? 0 : 1  );
    j >>= 1;
  }printf( "\n" );
  return 0;
}
перевод числа в двоичное
1
быдлокодер
 Аватар для kravam
1724 / 911 / 106
Регистрация: 04.06.2008
Сообщений: 5,705
30.08.2010, 00:10
Незнание битовых операций не освобождает отответственности.
Тема достаточно нетрудная, чтобы изучить её самостоятельно.
0
1 / 1 / 0
Регистрация: 29.08.2010
Сообщений: 7
30.08.2010, 21:08
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <stdio.h>
main()
{
 int x,y;
 scanf ("%d",&x);
 while(x>=1)
 {
  y=x/2;
  printf("%d",x-2*y);
  x=y;
 }
  printf("\n");
getch();
}
только результат выводится в обратном порядке...
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
30.08.2010, 22:12
вот ещё для разнообразия
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
26
27
28
#include <stdio.h>
#include <limits.h>
 
#define INT_BIT CHAR_BIT * sizeof(int)
#define GREAT_INT_BIT 1 << ( INT_BIT - 1 )
    
void bits_to_str(int val, unsigned int mask, char * buf){
    if ( ! mask ){
        *buf = '\0';
        return;
    }
    *buf = val & mask ? '1' : '0';
    bits_to_str(val, mask >> 1, ++buf);
}
    
int main(void){
    char buf[BUFSIZ];
    
    printf("Enter some values (empty string - exit)\n");
    while ( printf("> ") && fgets(buf, BUFSIZ, stdin) ){
        if ( *buf == '\n' )
            break;
        bits_to_str(atoi(buf), GREAT_INT_BIT, buf);
        printf("  %s\n", buf);
    }
    
    return 0;
}
0
Временно недоступен
 Аватар для #pragma
957 / 228 / 14
Регистрация: 12.04.2009
Сообщений: 926
31.08.2010, 00:09
А как насчёт независимости от количества бит на платформах? Кто-то может прокомментировать данный ньюанс? у easubudda вроде есть define соответствующий,но я толком не понял,как он используется
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12843 / 7592 / 1766
Регистрация: 25.07.2009
Сообщений: 13,973
31.08.2010, 00:21
Цитата Сообщение от #pragma Посмотреть сообщение
у easubudda вроде есть define соответствующий,но я толком не понял,как он используется
CHAR_BIT определено в limits.h
INT_BIT определяет количество бит в переменной типа int
GREAT_INT_BIT устанавливает в единицу старший бит в переменной типа int
У меня там тот косяк, что размер выходного буфера никак не проверяется, поэтому он должен быть определён как минимум так:
C
1
char buf[INT_BIT + 1];
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
31.08.2010, 00:21
Помогаю со студенческими работами здесь

Программа для перевода числа из одной системы счисления в другую
Разработать программный продукт для перевода целого положительного числа из одной системы счисления в другую. При запуске программы...

Программа для перевода числа из десятичной системы счисления во все существующие С++
Помогите пожалуйста. Не совсем понимаю как это правильно написать

Функции для перевода чисел из девятичной системы в десятичную
Надо на С++ Кто какие функции знает?

Написать программу для перевода чисел из двоичной системы в десятичную
Написать программу для перевода чисел из двоичной системы в десятичную

Программа для перевода чисел
Вывести на экран таблицу значений десятичных цифр в двоичной системе счисления.


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru