С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.58/718: Рейтинг темы: голосов - 718, средняя оценка - 4.58
2 / 2 / 0
Регистрация: 21.11.2010
Сообщений: 16
1

Перевод из десятичной системы в двоичную

22.11.2011, 18:54. Показов 130854. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
как осуществить Перевод из десятичной системы в двоичную???
2
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.11.2011, 18:54
Ответы с готовыми решениями:

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

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

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

Перевод UInt64 числа из десятичной системы счисления в двоичную
Есть, к примеру, randomInt = 5054385757817110541; byte buf =...

4
138 / 138 / 42
Регистрация: 02.11.2010
Сообщений: 316
22.11.2011, 19:34 2
Лучший ответ Сообщение было отмечено Getchar как решение

Решение

C#
1
string BinaryCode = Convert.ToString(value, 2);
Получишь строку - двоичный код числа value
Описание метода ToString
Подробнее именно об этой перегрузке метода ToString
9
434 / 299 / 82
Регистрация: 11.12.2010
Сообщений: 1,209
22.11.2011, 20:26 3
если надо написать собственный метод то
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//получает обратную запись двоичного числа из дсятичного
        private int perevod(int temp)
        {
            int temp1 = 0;
            List<int> s = new List<int>();
            while(temp>0)
            {
                temp1 = temp % 2;
                temp = temp / 2;
                s.Add(temp1);
            }
            return obrat(s);
        }
//переворачивает число и возвращает прямую запись двоичного числа.
        private int obrat(List<int> norm)
        {
            int[] s= new int[norm.Count];
            for (int i = norm.Count-1; i >=0 ; i--)
            {
                s[norm.Count-1-i] = norm[i];
            }
            return Convert.ToInt32(string.Join<int>("",s));
        }
9
4 / 4 / 0
Регистрация: 10.05.2017
Сообщений: 13
10.12.2018, 05:01 4
Может кому пригодится, перевод ЛЮБОГО, даже ДРОБНОГО десятичного числа в двоичную систему. В функцию поступает число переведённое в string, на выходе получаем тоже строку.

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
        public string ConvertTo2(string num, int round = 5)
        {
            string result = ""; //Результат
            int left = 0; //Целая часть
            int right = 0; //Дробная часть
            string[] temp1 = num.Split(new char[] { '.', ',' }); //Нужна для разделения целой и дробной частей
            left = Convert.ToInt32(temp1[0]);
            //Проверяем имеется ли у нас дробная часть
            if (temp1.Count() > 1) 
            {
                right = Convert.ToInt32(num.Split(new char[] { '.', ',' })[1]); //Дробная часть
            }
            //Алгоритм перевода целой части в двоичную систему
            while (true)
            {
                result += left % 2; //В ответ помещаем остаток от деления. В конце программы мы перевернём строку, так как в обратном порядке записываются остатки
                left = left / 2; //Так как Left целое число, то при делении например числа 2359 на 2, мы получим не 1179,5 а 1179
                if (left == 0)
                    break;
            }
            result = new string(result.ToCharArray().Reverse().ToArray()); //Реверсирование строки
            /*Не углублялся в ситуацию, но вдруг при реверсе появятся первые символы нули, а ведь их мы не пишем!
            Не знаю есть ли необходимость в этом цикле */
            while (true)
            {
                int i = 0;
                if (result[i] == '0')
                    result = result.Remove(i,1);
                else break;
            }
            //Прокеряем есть ли у нас дробная часть, можно было бы проверить и так if(temp1.count()>1)
            if (right == 0)
                return result;
 
            //Добавляем разделить целой части от дробной
            result += '.';
 
            int count = right.ToString().Count(); // Нам нужно знать кол-во цифр, при превышении которого дописывается единичка
 
            for (int i = 0; i < round; i++)
            {
                /*Умножаем число на 2 и проверяем, стало ли оно больше по количеству цифр, если да,
                то в результат идёт "1" и первая цифра у right удаляется */
                right = right * 2;
                if (right.ToString().Count() > count)
                {
                    string buf = right.ToString();
                    buf = buf.Remove(0, 1);
                    right = Convert.ToInt32(buf);
 
                    result += '1';
                }
                else
                {
                    result += '0';
                }
            }
            return result;
        }
4
1 / 1 / 0
Регистрация: 30.09.2019
Сообщений: 20
23.09.2021, 21:27 5
Daniel949, хоть тема и старинная, отмечу что ваша программа работает с любыми числами кроме тех, у которых в дробной части сначала идёт ноль. Например 0,05 -
C#
1
right = Convert.ToInt32(num.Split(new char[] { '.', ',' })[1]); //Дробная часть
кусочек кода получает на вход 05, и переводит его в 5, то есть нолик теряется, следовательно далее при проверке, увеличилось ли число в длине - выведется еденица, ведь 5*2 = 10 (- увеличилось)

А должно было быть 05*2 = 10 (- не увеличилось)

Добавлено через 24 минуты
Слегка усовершенствовал ваш метод, по сути всё то же, но теперь работает и с нулями

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
public string ConvertTo2(string num, int round = 5)
        {
            string result = ""; //Результат
            int left = 0; //Целая часть
            string right = "0"; //Дробная часть
            string[] temp1 = num.Split(new char[] { '.', ',' }); //Нужна для разделения целой и дробной частей
            left = Convert.ToInt32(temp1[0]);
            //Проверяем имеется ли у нас дробная часть
            if (temp1.Count() > 1)
            {
                right = num.Split(new char[] { '.', ',' })[1]; //Дробная часть
            }
            //Алгоритм перевода целой части в двоичную систему
            while (true)
            {
                result += left % 2; //В ответ помещаем остаток от деления. В конце программы мы перевернём строку, так как в обратном порядке записываются остатки
                left = left / 2; //Так как Left целое число, то при делении например числа 2359 на 2, мы получим не 1179,5 а 1179
                if (left == 0)
                    break;
            }
            result = new string(result.ToCharArray().Reverse().ToArray()); //Реверсирование строки
            
            //Прокеряем есть ли у нас дробная часть, можно было бы проверить и так if(temp1.count()>1)
            if (Convert.ToInt32(right) == 0)
                return result;
 
            //Добавляем разделить целой части от дробной
            result += '.';
 
            int count = right.ToString().Count(); // Нам нужно знать кол-во цифр, при превышении которого дописывается единичка
            int INTright = Convert.ToInt32(right);
 
            for (int i = 0; i < round; i++)
            {
                /*Умножаем число на 2 и проверяем, стало ли оно больше по количеству цифр, если да,
                то в результат идёт "1" и первая цифра у right удаляется */
                INTright = INTright * 2;
                if (INTright.ToString().Count() > count)
                {
                    string buf = INTright.ToString();
                    buf = buf.Remove(0, 1);
                    INTright = Convert.ToInt32(buf);
 
                    result += '1';
                }
                else
                {
                    result += '0';
                }
            }
            return result;
        }
1
23.09.2021, 21:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.09.2021, 21:27
Помогаю со студенческими работами здесь

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

Перевод чисел типа double из десятичной системы счисления в двоичную
Как перевести числа, не используя не используя Convert

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

Перевод из десятичной в двоичную
Не интересует метод Convert.ToString(value, 2); а интересует сам процесс. Я в этом новичок...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru