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

Создать класс для работы с двоичными числами реализовать в нем операцию сложения, умножения, вычитания

30.01.2015, 12:34. Показов 2190. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
создать класс для работы с двоичными числами реализовать в нем операцию сложения умнежения вычитания
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.01.2015, 12:34
Ответы с готовыми решениями:

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

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

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

Описать класс "Многочлен" и перегрузку операций для этого класса — сложения, умножения, вычитания
Доброго времени суток)) Как можно описать класс "Многочлен" ну и перегрузку операций для этого...

2
116 / 116 / 70
Регистрация: 10.11.2013
Сообщений: 445
31.01.2015, 07:37 2
В чём проблема? Выбрал 16 бит, например, и в дополнительном коде их сохраняешь: с ним очень просто работать для знаковых чисел.
0
Эксперт .NETАвтор FAQ
10410 / 5140 / 1825
Регистрация: 11.01.2015
Сообщений: 6,226
Записей в блоге: 34
31.01.2015, 12:47 3
Лучший ответ Сообщение было отмечено JimmySteve как решение

Решение

JimmySteve,
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;
 
namespace ConsoleApplication157
{
    class Program
    {
 
        public static void Main(string[] args)
        {
            var n1 = new Bin("1011");
            var n2 = new Bin("1101");
 
            Console.WriteLine(n1 + n2);
            Console.WriteLine(n2 - n1);
            Console.WriteLine(n1 * n2);
 
            Console.ReadLine();
        }
    }
 
    /// <summary>
    /// Binary number
    /// </summary>
    class Bin
    {
        /// <summary>
        /// Bits of number, from lower to higher
        /// </summary>
        private List<int> bits = new List<int>();
 
        Bin()
        {
        }
 
        public Bin(string str)
        {
            foreach (var c in str.Reverse())
                bits.Add(c=='1' ? 1 : 0);
        }
 
        public Bin Clone()
        {
            return new Bin() {bits = new List<int>(bits)};
        }
 
        public int this[int index]
        {
            get { return index >= bits.Count ? 0 : bits[index]; }
        }
 
        public int Length { get { return bits.Count; } }
 
        /// <summary>
        /// Shifts number left (equal mult by 2^shift)
        /// </summary>
        public static Bin operator <<(Bin n, int shift)
        {
            var res = n.Clone();
            res.bits.InsertRange(0, new int[shift]);
            return res;
        }
 
        /// <summary>
        /// Shifts number right (equal div by 2^shift)
        /// </summary>
        public static Bin operator >>(Bin n, int shift)
        {
            var res = n.Clone();
            res.bits.RemoveRange(0, shift);
            return res;
        }
 
        /// <summary>
        /// Sum of binary numbers
        /// </summary>
        public static Bin operator +(Bin n1, Bin n2)
        {
            var c = Math.Max(n1.Length, n2.Length);
            var rest = 0;
            var res = new Bin();
 
            for(int i=0;i<c;i++)
            {
                var n = n1[i] + n2[i] + rest;
                rest = n >> 1;
                res.bits.Add(n & 0x01);
            }
 
            if (rest > 0)
                res.bits.Add(1);
 
            return res;
        }
 
        /// <summary>
        /// Diff of binary numbers
        /// </summary>
        public static Bin operator -(Bin n1, Bin n2)
        {
            var c = Math.Max(n1.Length, n2.Length);
            var rest = 0;
            var res = new Bin();
 
            for (int i = 0; i < c; i++)
            {
                var n = n1[i] - n2[i] - rest;
                rest = n < 0 ? 1 : 0;
 
                res.bits.Add(n < 0 ? 1 : n);
            }
 
            if (rest > 0)
                throw new Exception("Result less 0");
 
            return res;
        }
 
        /// <summary>
        /// Mult of binary numbers
        /// </summary>
        public static Bin operator *(Bin n1, Bin n2)
        {
            var res = new Bin();
 
            for (int i = 0; i < n2.Length; i++)
            {
                if (n2[i] == 1)
                    res = res + n1;
                n1 = n1 << 1;
            }
 
            return res;
        }
 
        public override string ToString()
        {
            var sb = new StringBuilder();
            for (int i = Length - 1; i >= 0; i--)
                sb.Append(bits[i] == 1 ? '1' : '0');
 
            return sb.ToString().TrimStart('0');
        }
    }
}
0
31.01.2015, 12:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.01.2015, 12:47
Помогаю со студенческими работами здесь

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

Реализовать класс FazzyNumber для работы с нечеткими числами
Windows Forms Создайте класс с закрытыми полями, где операции реализуются как методы класса....

Реализовать класс Complex для работы с комплексными числами
Комплексное число представляются парой действительных чисел (a,b), где a-действительная часть,...

Операции сложения и вычитания с двоичными числами
Здравствуйте, помогите, пожалуйста, перевести и вычислить числа в двоичном виде. Вот числа ...


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

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