Аватар для SyxaRuk
0 / 0 / 1
Регистрация: 14.11.2013
Сообщений: 51

Перевести 2 десятичных числа в двоичные

01.12.2013, 15:35. Показов 1056. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Надо перевести 2 десятичных числа в двоичные. Если одно из чисел будет короче второго, то дополнить недостающие старшие биты нулями.
Например, получились числа 110101 и 1001. Надо, чтобы программа вывела 110101 и 001001.
Программа работает, но последние циклы для дополнения нулями не при какихусловиях не работают.
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
            Console.WriteLine("Vvedi 1 chislo:");
            string a = Console.ReadLine();
            int n1 = int.Parse(a);
            Console.WriteLine("Vvedi 2 chislo:");
            string b = Console.ReadLine();
            int n2 = int.Parse(b);
 
            string obr_str1 = "";
            while (n1 != 0)
            {
                obr_str1 += n1 % 2;
                n1 /= 2;
            }
 
            string str1 = "";
            for (int i = (obr_str1.Length - 1); i >= 0; i--)
            {
                str1 += obr_str1[i];
            }
 
            string obr_str2 = "";
            while (n2 != 0)
            {
                obr_str2 += n2 % 2;
                n2 /= 2;
            }
 
            string str2 = "";
            for (int i = (obr_str2.Length - 1); i >= 0; i--)
            {
                str2 += obr_str2[i];
            }
            if (str1.Length < str2.Length)
            {
                while (str1.Length == str2.Length)
                {
                    str1 = str1.Insert(0, "0");
                }
            }
            if (str2.Length < str1.Length)
            {
                while (str2.Length == str1.Length)
                {
                    str2 = str2.Insert(0, "0");
                }
            }
            Console.WriteLine(str1);
            Console.WriteLine(str2);


Хотя так все работает:
Кликните здесь для просмотра всего текста
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
            if (str1.Length < str2.Length) { str1 = str1.Insert(0, "0"); }
            if (str1.Length < str2.Length) { str1 = str1.Insert(0, "0"); }
            if (str1.Length < str2.Length) { str1 = str1.Insert(0, "0"); }
            if (str1.Length < str2.Length) { str1 = str1.Insert(0, "0"); }
            if (str1.Length < str2.Length) { str1 = str1.Insert(0, "0"); }
            if (str1.Length < str2.Length) { str1 = str1.Insert(0, "0"); }
            if (str1.Length < str2.Length) { str1 = str1.Insert(0, "0"); }
            if (str1.Length < str2.Length) { str1 = str1.Insert(0, "0"); }
            if (str1.Length < str2.Length) { str1 = str1.Insert(0, "0"); }
            if (str1.Length < str2.Length) { str1 = str1.Insert(0, "0"); }
            if (str1.Length < str2.Length) { str1 = str1.Insert(0, "0"); }
            if (str1.Length < str2.Length) { str1 = str1.Insert(0, "0"); }
 
 
            if (str1.Length > str2.Length) { str2 = str2.Insert(0, "0"); }
            if (str1.Length > str2.Length) { str2 = str2.Insert(0, "0"); }
            if (str1.Length > str2.Length) { str2 = str2.Insert(0, "0"); }
            if (str1.Length > str2.Length) { str2 = str2.Insert(0, "0"); }
            if (str1.Length > str2.Length) { str2 = str2.Insert(0, "0"); }
            if (str1.Length > str2.Length) { str2 = str2.Insert(0, "0"); }
            if (str1.Length > str2.Length) { str2 = str2.Insert(0, "0"); }
            if (str1.Length > str2.Length) { str2 = str2.Insert(0, "0"); }
            if (str1.Length > str2.Length) { str2 = str2.Insert(0, "0"); } 
            if (str1.Length > str2.Length) { str2 = str2.Insert(0, "0"); }
            if (str1.Length > str2.Length) { str2 = str2.Insert(0, "0"); }
            if (str1.Length > str2.Length) { str2 = str2.Insert(0, "0"); }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.12.2013, 15:35
Ответы с готовыми решениями:

Перевести массив десятичных чисел в двоичные
Помогите пожалуйста на языке СИ: Дан массив целых чисел, состоящий из N элементов (N=10). Перевести заданные числа в двоичную систему...

Перевести десятичные числа в двоичные с точностью до 10–8
Перевести десятичные числа в двоичные с точностью до 10–8. Для полученных двоичных чисел записать прямой, обратный и дополнительный коды ...

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

6
 Аватар для Kaleb
81 / 79 / 30
Регистрация: 01.09.2013
Сообщений: 152
01.12.2013, 20:29
доработал
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
using System;
using System.Linq;
 
namespace ConsoleApplication4
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("Enter  first number: ");
            var n1 = int.Parse(Console.ReadLine()); // var implicitly typed
            Console.Write("Enter second number: ");
            var n2 = int.Parse(Console.ReadLine());
 
            string obr_str1 = string.Empty; //somehow think declare empty string is more correct
            string obr_str2 = string.Empty;
 
            while (n1 != 0)
            {
                obr_str1 += n1 % 2;
                n1 /= 2;
            }
 
            while (n2 != 0)
            {
                obr_str2 += n2 % 2;
                n2 /= 2;
            }
 
            var str1 = new string(obr_str1.Reverse().ToArray()); // linq reverse
            var str2 = new string(obr_str2.Reverse().ToArray());
 
            while (str1.Length > str2.Length) // add zero
                str2 = str2.Insert(0, "0");
 
            Console.WriteLine("\n"+str1);
            Console.WriteLine(str2);
            Console.ReadKey(true);
        }
    }
}


Не по теме:

когда начинал кодить выходило нечто на 50-100 строк, а нужно было вставить цикл на 5 строк

0
 Аватар для SyxaRuk
0 / 0 / 1
Регистрация: 14.11.2013
Сообщений: 51
01.12.2013, 22:57  [ТС]
Kaleb, Спасибо, но мне не понятны несколько строк:
C#
1
string obr_str2 = string.Empty;
и
C#
1
var str1 = new string(obr_str1.Reverse().ToArray());
Хотя насчет второго могу предположить, что var str1 определит какого типа будет переменная, а ToArray() - учитывая в какой тип была преобразована переменная, разобьет на нужные элементы.


Это была первая часть задачи. Теперь для меня вообще наверно невозможное - сделать арифметические операции (+-*/). Вот пытался сделать сложение:
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
string flag = "0";
            string str="";
            for (int i = (str1.Length-1); i>=0; i--)
            {
                for (int j = 0; j < str.Length; j++)
                {
 
                    if (str1[i] != str2[i])
                    {
                        if ((str1[i] == 0 && str2[i] == 1) || (str2[i] == 0 && str1[i] == 1)) str = "1";
                    }
                    else
                    {
                        if (str1[i] == 0 && str2[i] == 0) str = "0";
                        else
                        {
                            flag = "1";
                            if (str1[i] == 1 && str2[i] == 1) str = "0";
                            str = str.Insert((j - 1), flag);
                        }
                    }
                    str = str + flag;
                }
                str += str;
            }
            Console.WriteLine(str);
Добавлено через 7 минут

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

Не по теме:

Меню, ошибки и в классы засунуть я, думаю, смогу:)

0
 Аватар для Евгений В
912 / 672 / 134
Регистрация: 01.03.2010
Сообщений: 1,279
01.12.2013, 23:03
Цитата Сообщение от SyxaRuk Посмотреть сообщение
Уже наверно месяц делаю эту задачу, а сдавать уже через день.
Тогда поздно уже что то изучать. Делайте так, как планировали.
Конкретно, по первому вопросу.
Замените
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
            if (str1.Length < str2.Length)
            {
                while (str1.Length == str2.Length)
                {
                    str1 = str1.Insert(0, "0");
                }
            }
            if (str2.Length < str1.Length)
            {
                while (str2.Length == str1.Length)
                {
                    str2 = str2.Insert(0, "0");
                }
            }
на
C#
1
2
3
4
5
6
7
                while (str2.Length != str1.Length)
                {
                    if (str1.Length < str2.Length)
                        str1 = str1.Insert(0, "0");
                    else
                        str2 = str2.Insert(0, "0");
                }
1
 Аватар для Kaleb
81 / 79 / 30
Регистрация: 01.09.2013
Сообщений: 152
01.12.2013, 23:05
C#
1
string obr_str2 = string.Empty;
Представляет пустую строку
C#
1
var str1 = new string(obr_str1.Reverse().ToArray());
var неявно задаем тип переменной, компилятор сам определит
реверс строки str1
0
 Аватар для SyxaRuk
0 / 0 / 1
Регистрация: 14.11.2013
Сообщений: 51
01.12.2013, 23:15  [ТС]
Цитата Сообщение от Kaleb Посмотреть сообщение
C#
1
string obr_str2 = string.Empty;
Представляет пустую строку
То есть Empty - это значит по умолчанию?
Цитата Сообщение от Kaleb Посмотреть сообщение
C#
1
var str1 = new string(obr_str1.Reverse().ToArray());
var неявно задаем тип переменной, компилятор сам определит
реверс строки str1
А что именно делает ToArray(), с реверсом понятно.
0
73 / 72 / 37
Регистрация: 21.11.2009
Сообщений: 258
01.12.2013, 23:33
Цитата Сообщение от SyxaRuk Посмотреть сообщение
То есть Empty - это значит по умолчанию?
Empty - это пустая строка. String.Empty = ""
Цитата Сообщение от SyxaRuk Посмотреть сообщение
А что именно делает ToArray(), с реверсом понятно.
Метод
C#
1
element.Reverse
есть не что иное, как Linq-надстроечка, которая возвращает интерфейс IEnumerable. А ToArray превращает этот интерфейс в массив.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.12.2013, 23:33
Помогаю со студенческими работами здесь

Перевод десятичных чисел в двоичные
Разработать программу для перевода десятичных чисел в двоичные. Исходные данные считывать из файла, указанного пользователем. Результат...

Перевод отрицательных десятичных чисел в двоичные
Помогите, пожалуйста! Как перевести отрицательные десятичные числа в двоичные? С положительными всё понятно, а вот что делать с...

Перевод дробных десятичных чисел в дробные двоичные и обратно
Требуется перевести дробное десятичное число в дробное двоичное число. и наоборот перевести дробное двоичное число в дробное...

Перевести матрицу десятичных дробей в обыкновенные дроби
Здравствуйте, у меня вот возникла такая проблема при выполнении дипломной работы. Поиск подобного кода не дал результатов. Есть только...

Двоичные числа на С++
Доброго времени суток. Восьмеричные числа на С++ вроде представляются с префиксом 0, т.е. 0124 Шестнадцатеричные - 0x, т.е. 0x124, а...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru