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

Операции побитового сдвига - обработанный массив необходимо снова разложить на цвета

06.09.2014, 20:15. Показов 1821. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Имеется массив с побитовым сдвигом

C#
1
int[] colors = new int[1 << 24];
В него записаны цвета RGB
C#
1
2
3
4
5
6
 for (int y = 0; y < L.Height; y++)
                    for (int x = 0; x < L.Width; x++)
                    {
                        Color c = L.GetPixel(x, y);
                        colors[(c.R << 16) + (c.G << 8) + c.B]++;
                    }
Массив обработан, теперь необходимо снова разложить массив на цвета, в этом и есть трабл...
Препод говорил что нужно отнимать при возврате, но не понимаю как вернуть значение...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.09.2014, 20:15
Ответы с готовыми решениями:

Значение необходимо разложить по всем вариантам цвета
Все СКУ, которые заканчиваются (два последних символа) на &quot;XX&quot; необходимо разложить по всем...

Операция побитового сдвига
Задача состоит в том,что нужно введенное число (unsigned char) перевести в двоичную, а затем...

Оператор побитового сдвига
как называется этот оператор и что он делает ?

Перегрузка оператора побитового сдвига <<
Здравствуйте, подскажите, пожалуйста, как правильно перегрузить оператор побитового сдвига?public...

10
Заблокирован
06.09.2014, 20:28 2
нужно создать маску для каждого значения и использовать & при побитовом сдвиге биты обнуляются, поэтому нужна маска. если правильно понял задачу
0
0 / 0 / 0
Регистрация: 09.11.2012
Сообщений: 71
06.09.2014, 20:31  [ТС] 3
Нужно, таким образом разложить изображение на одноцветные слои...
Таким методом приказали делать...
Как тут поможет маска?

Добавлено через 53 секунды
И каким образом создается маска?
0
Заблокирован
06.09.2014, 20:36 4
имеется байт 10101111 сдвиг влево на 4 выход - 11110000
значит при возврате для сдвига на 4 нужна маска 10100000 для возврата в исходное состояние
алгоритм прост. если я правильно понял задачу
0
1144 / 873 / 506
Регистрация: 09.04.2014
Сообщений: 2,056
06.09.2014, 20:38 5
Цитата Сообщение от factura122 Посмотреть сообщение
В него записаны цвета RGB
Да нет, в него записано количество пикселей для каждого из возможных значений цвета
0
0 / 0 / 0
Регистрация: 09.11.2012
Сообщений: 71
06.09.2014, 20:39  [ТС] 6
А каким образом создать маску, никогда не имел с ней дела, можно пример кода, или на словах описать алгоритм?
0
Заблокирован
06.09.2014, 20:39 7
маска это просто число можно воспринимать ее как сохранение предыдущего, но тут сдвиги поэтому маска и побитовые операции. препод поймет. просто нужно создать алгоритм для создания маски для каждого значения сдвига.
0
0 / 0 / 0
Регистрация: 09.11.2012
Сообщений: 71
06.09.2014, 20:42  [ТС] 8
Как создать то?
Ведь должен же быть готовый алгоритм?
0
Заблокирован
06.09.2014, 20:51 9
смысл примерно такой: (возможно нужно еще и направление сдвига как флаг если оно разное)
C#
1
2
3
4
5
public int GetMask(int input, int offset)
{
    int temp = input << offset;
    return temp & input;
}
Добавлено через 59 секунд
для каждого значения что-то подобное нужно, только нужно более хорошо подумать и сделать нормально
0
1144 / 873 / 506
Регистрация: 09.04.2014
Сообщений: 2,056
06.09.2014, 20:52 10
если х это ваше значение RGB то
C#
1
Color c= Color.FromArgb((x>>16) & 0xFF,(x>>8) & 0xFF,x & 0xFF);
2
Заблокирован
06.09.2014, 20:54 11
потом в обратном направлении соответственно будут получены исходные данные
C#
1
2
3
4
public int GetSourceData(int currentData, int mask)
{
    return currentData & mask;
}
все это в общих чертах
0
06.09.2014, 20:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.09.2014, 20:54
Помогаю со студенческими работами здесь

Ассемблерная вставка - реализация побитового сдвига
Помогите пожалуйста. Я не изучал только делфи, а надо сделать в паскале вставку на ассемблере. ...

Вычислить третий бит справа используя оператор побитового сдвига
Условие задачи: Напишите программу, * которая вычисляет третий бит справа в двоичном...

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

Составить массив, являющийся результатом "побитового" выполнения над двумя массивам операции XOR
Пользователем вводится два массива одинаковой длины,,каждый из которых содержит символ 0 или 1. ...


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

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