1 / 1 / 0
Регистрация: 20.04.2013
Сообщений: 283
1

Реализация собственного класса битовых массивов

20.04.2013, 12:50. Показов 1448. Ответов 2
Метки нет (Все метки)

Нужно на c# реализовать собственный класс для работы с битовыми массивами.должны быть хотя бы все 4 логические функции (not,and,or,xor). C not немного разобрался, а вот как для других учесть возможную разницу размеров двух массивов- не пойму. И Подскажите еще, как сделать так, чтоб not возвращал новый массив , а не менял старый. Вот мой код
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
 class Bit
    {
        
        public Bit(int[] data)
        { 
                
                    this.data = data;
 
                    for (int i = 0; i < data.Length; i++)
                    {
                        if ((data[i] != 0) & (data[i] != 1))
                        {
                            data[i] = 0;
                        }
                    }
        }
 
         
        
        public static int[] not(Bit a)
        {
            {
                for (int j = 0; j < a.data.Length;j++ )
                {
                    if (a.data[j] == 0)
                    {
                        a.data[j] = 1;
                    }
                    else
                    {
                        a.data[j] = 0;
                    }
                }
           }
       return a.data;
        }
      
        int[] data;
 
        public int[] Data
        {
            get
            {
                return data;
            }
        }
    }
    
 
  
    
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.04.2013, 12:50
Ответы с готовыми решениями:

Реализация собственного класса вектора
Создать абстрактный тип данных - класс вектор, который имеет указатель на float, число элементов и...

Запись в собственного класса бинарный файл собственного
есть Свой тип данных дробь. Надо реализовать запись и загрузку в\из бинарного файла. #ifndef...

Реализация битовых операций
IntA=10; A=A&amp;0F; A=A|03; A=A&lt;&lt;1 Чему будет равно A?

Реализация битовых операций в Си++
По теме: Реализация битовых операций в Си++. Даны два неравных числа: n и m, не превосходящие 31....

2
Эксперт .NET
16152 / 12148 / 3194
Регистрация: 17.09.2011
Сообщений: 20,236
20.04.2013, 13:00 2
Цитата Сообщение от Dimitrii Посмотреть сообщение
как для других учесть возможную разницу размеров двух массивов- не пойму.
Сначала проводите нужную операцию для общих индексов, а потом устанавливайте оставшиеся биты в большем массиве.

Цитата Сообщение от Dimitrii Посмотреть сообщение
как сделать так, чтоб not возвращал новый массив , а не менял старый.
C#
1
int[] b = new int[a.Data.Length];
После чего заменить во всем методе "a.Data" на "b".

Замечание.
У вас очень много памяти тратится зря: для представления одного бита вы используете 32 бита. Один используется, 31 валяется без дела.
1
428 / 429 / 93
Регистрация: 16.07.2012
Сообщений: 886
20.04.2013, 13:30 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
24
25
26
27
28
29
30
31
32
public class Bits
{
    private readonly List<bool> data;
 
    public Bits(IEnumerable<bool> data)
    {
        this.data = new List<bool>(data);
    }
 
    // Перегрузка оператора "Не"
    public static Bits operator !(Bits bits)
    {
        var data = new bool[bits.data.Count];
        for (var i = 0; i < bits.data.Count; i++)
        {
            data[i] = !bits.data[i];
        }
        return new Bits(data);
    }
 
    // Перегрузка оператора "Или"
    public static Bits operator |(Bits bits1, Bits bits2)
    {
        var count = Math.Min(bits1.data.Count, bits2.data.Count);
        var data = new bool[count];
        for (var i = 0; i < count; i++)
        {
            data[i] = bits1.data[i] | bits2.data[i];
        }
        return new Bits(data);
    }
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.04.2013, 13:30
Помогаю со студенческими работами здесь

Создание битовых массивов произвольной длинны
Всем привет!Нужна помощь! Мне необходимо в Delphi создать и записать в файл последовательность бит...

Реализация собственного события
Всем привет. Реализую собственное событие для компонента. И застрял с его условием вызова....

Реализация собственного thread'a
Здравствуйте, задача следующая: Нужно написать функцию int thread_create(void (*fp)()), которая...

Реализация собственного меню
Допустим, мы сделали меню где есть 3 кнопки. Допустим, первая - запуск, вторая - настройки, третья...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru