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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.06.2011, 11:42   #1
hardorsoft
Пользователь
 
Регистрация: 13.05.2011
Сообщений: 35
По умолчанию Язык Си. Побитовые операции.

Дана функция getbits(x,p,n)

Код:
int getbits(unsigned x, unsigned p, unsigned n)
{
  return((x >> (p+1-n)) & ~(~0 << n));
}
Нужно переписать функцию чтобы биты отсчитывались слева на право.

Мой вариант:
Код:
int getbits(unsigned x, unsigned p, unsigned n)
{
  return((x << (p-1)) & ~(~0 << n));
}
Правильно я решил задачу?
Решенные мною и не только задачи на Си можно смотреть здесь:
http://cirishen.blogspot.com/

Последний раз редактировалось hardorsoft; 28.06.2011 в 12:49.
hardorsoft вне форума Ответить с цитированием
Старый 28.06.2011, 13:06   #2
Mandrivnyk
Software Developer
Участник клуба
 
Аватар для Mandrivnyk
 
Регистрация: 01.03.2011
Сообщений: 1,098
По умолчанию

Насколько я понимаю, x -- заданное число, p -- позиция, с которой считываются биты, n -- количество битов. Так?
Болтовня ничего не стоит. Покажите мне код. (c) Linus Torvalds
Помог ответ? -- Поставьте отзыв.
Выражения особой благодарности в рублевом эквиваленте отправлять сюда --> R269634919062
Mandrivnyk вне форума Ответить с цитированием
Старый 28.06.2011, 15:59   #3
hardorsoft
Пользователь
 
Регистрация: 13.05.2011
Сообщений: 35
По умолчанию

Первая функция возвращает (сдвинутыми к правому краю) начинающиеся с позиции p поле переменной х длиной n битов.
То есть да, вы правы.

Задачу я решил правильно?
Решенные мною и не только задачи на Си можно смотреть здесь:
http://cirishen.blogspot.com/

Последний раз редактировалось Stilet; 30.06.2011 в 07:56.
hardorsoft вне форума Ответить с цитированием
Старый 29.06.2011, 20:28   #4
An1ka
C++,DirectX/OpenGL
Форумчанин
 
Регистрация: 09.01.2011
Сообщений: 422
По умолчанию

Цитата:
Сообщение от hardorsoft Посмотреть сообщение
Правильно я решил задачу?
Нет, не правильно. Типы разные int и unsigned...
An1ka вне форума Ответить с цитированием
Старый 30.06.2011, 07:10   #5
hardorsoft
Пользователь
 
Регистрация: 13.05.2011
Сообщений: 35
По умолчанию

Понятно, на других форумах такая же бадья. Ну никак я с этими типами подружиться не могу. :-)
Решенные мною и не только задачи на Си можно смотреть здесь:
http://cirishen.blogspot.com/
hardorsoft вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
побитовые операции serega28 Паскаль, Turbo Pascal, PascalABC.NET 11 25.01.2011 14:02
Побитовые операции Unique Паскаль, Turbo Pascal, PascalABC.NET 3 29.08.2010 18:50
Побитовые операции С++ Defa4ka Помощь студентам 4 22.06.2010 14:55
побитовые операции Александе еть я Общие вопросы C/C++ 2 18.04.2010 13:31
Задачка, побитовые операции язык C ToxaRUS Помощь студентам 0 05.11.2009 19:51