Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Не могу решить задачки по СИ  (Прочитано 6662 раз)
0 Пользователей и 1 Гость смотрят эту тему.
#!/Perlik
Гость
« : 13-03-2006 16:20 » new

есть несколько задачек по Си, никак не могу догадаться как их решить.

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

2. получить случайное число и в четвертый бит установить единицу, проверить результат.

3. получить 2 слуйчайных числа, содержимое 3-го бита первого числа, установитьв ч-й бит второго числа.

ребята, помогите пожалуйста, я не прошу готовые ответы дать, но могет кто оъяснит мне как решать их.
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #1 : 13-03-2006 16:53 » 

#!/Perlik, Тебе нужно полное решение?
Или все таки будут конкретные вопросы?
Чтобы проверить какой либо бит нужно сделать логическое И экзаменуемого числа с числом содержашим только этот бит.
Пример
Код:
if (ch & 4)  ......;  //Тута выполняем действия, так как 3 бит сушествует
Чтобы установить бит, нужно сделать логическое ИЛИ числа с числом содержашим только данный бит.
Пример:
Код:
ch = ch | 8;         //Устанавливаем 4 бит в 1
Все остальное можеш сделать уже сам.
« Последнее редактирование: 13-03-2006 17:05 от Finch » Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #2 : 13-03-2006 17:03 » 

Очень просто - используе операции бинарного сложения (ИЛИ) или умножения (И)
Сначала тебе нужна маска бита - для этого есть оператор сдвига <<

1      = 0001
1<<1 = 0010
1<<2 = 0100
1<<3 = 1000

чтобы проверить например 3ий бит (индекс 2, начинаем с нуля) тебе надо "умножить" число с маской

  001101001 & 000000100

  001101001
  000000100
получаем - 0
  000000000

unsigned char uiCh;
int nBit = 2;

if(uiCh&(1<<nBit)==0)
{
    // бит равен 0
}
else
{
    // бит равен 1
}
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines