Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.11.2021, 10:25   #1
Radon33
Пользователь
 
Регистрация: 22.10.2021
Сообщений: 34
По умолчанию Как написать код для данного задания, что-то вообще не получается у меня

Пусть задан байт x=01101010. Необходимо найти в нём трёхразрядную
последовательность 101 и вывести на экран сообщение о результате поиска.
Для этого надо в исходном числе выделить старшие (левые) три разряда
маской 11100000 и проверить равенство двух байтов: искомой
последовательности 10100000 и выделенной последовательности xxx00000.
Если байты равны, то задача решена и следует вывести номер разряда, с
которого начинается искомая последовательность 101 в байте x. Иначе –
сдвигаем маску 11100000 вправо на один разряд, получая новую маску
01110000. Кроме этого сдвигаем вправо на один разряд искомую
последовательность 10100000, получая новую искомую последовательность
01010000, и повторяя выделение разрядов и сравнение до тех пор, пока
сравнение не станет успешным. Если последовательность 101 не будет
найдена, то надо вывести сообщение об этом.
Radon33 вне форума Ответить с цитированием
Старый 09.11.2021, 23:28   #2
NeLirik
Пользователь
 
Регистрация: 09.11.2021
Сообщений: 11
По умолчанию

Для начала можно взять этот код
Код:
int a = 0b_0000_0101;  //здесь нельзя задавать тип byte так как для него не определены операции сдвига 
            int Mask=0b_1010_0000; // а здесь выбран тип безнаковый целый unsigned int
            int c;
            for (int i =1; i<=5;i++)
            {

                 c = a & Mask;
                if (c != 0) { if ((c ^ a) == 0) { Console.Write("\n Искомая последовательность битов 101 в заданном байте есть"); break; } else { Mask = Mask >> 1; } }

               // Console.Write(Convert.ToString("\n операция побитного И   " + Convert.ToString(c, toBase: 2)));
                
                if (c == 0) { Mask = Mask >> 1; }
                if (c == 0 && i == 5) { Console.Write("\n Искомая последовательность битов 101  отсутсвует");  }
                if (c != 0 && i == 5) { if ((c ^ a) != 0) { Console.Write("\n Искомая последовательность битов 101 отсутствует");  } }
            }

        
            Console.ReadKey();
Только этот код нерабочий (неправильно работает). Я не разобрался в логике работы с масками
NeLirik вне форума Ответить с цитированием
Старый 10.11.2021, 01:23   #3
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
byte x    = 0b01101010;
byte mask = 0b11100000;
byte a    = 0b10100000;
bool found = false;
for (int i = 7; i >= 2; i--, mask >>= 1, a >>= 1)
    if ((x & mask) == a) {
        Console.Write(i);
        found = true;
        break;
    }
if (!found)
    Console.Write("not found");
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 13.11.2021, 08:50   #4
NeLirik
Пользователь
 
Регистрация: 09.11.2021
Сообщений: 11
Хорошо А что так можно было???

for (int i = 7; i >= 2; i--, mask >>= 1, a >>= 1)

А что так можно было???

И в своем коде неправильно указал, что нельзя тип byte использовать. Не дочитал документацию до конца, про автоматическое преобразование.
NeLirik вне форума Ответить с цитированием
Старый 14.11.2021, 01:48   #5
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Цитата:
Сообщение от NeLirik Посмотреть сообщение
А что так можно было???
Ага. Узнали теперь что-то новое для себя
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 14.11.2021, 13:42   #6
Radon33
Пользователь
 
Регистрация: 22.10.2021
Сообщений: 34
По умолчанию

Всем большое спасибо!
Radon33 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
U=max(a,b) или ЧТО ОТ МЕНЯ ВООБЩЕ ТРЕБУЮТ??? Areopag Помощь студентам 5 22.10.2018 21:28
помогите пожалуйста написать код программы для решения данного примера: ((-1+i*sqrt(3))/2)^2) Лидия_3 Общие вопросы C/C++ 3 09.02.2016 14:15
Написать программу на HTML и JavaScript для следующего задания: Найти максимальную цифру в записи данного трехзначного ч Marika lady Помощь студентам 1 29.09.2011 06:48