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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2009, 21:01   #1
ssvd
Новичок
Джуниор
 
Регистрация: 03.11.2009
Сообщений: 2
По умолчанию операции сдвига

начинающий я, помогите со сдвигом
требуется сделать в цикле сдвиг нуля в такой последовательности.
подскажите как сделать?
11111110
11111101
11111011
11110111
11101111
11011111
10111111
01111111
ssvd вне форума Ответить с цитированием
Старый 04.11.2009, 01:55   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Скажем, так:
Код:
#include <stdio.h>

void printbits(const short int a)
{
 short int i;
 for(i=128; i>=1; i>>=1)
  printf("%d",(a&i)?1:0); 
printf("\n");
}

short int toleft(short int a)
{
 int k;
 short int res;
 for(k=0; k<=7; ++k)
  if(!(a&(1<<k))) break;
 res = a;
 res |= (1<<k++);
 res &= ~(1<<k);
 return res; 
}

int main()
{
int i;
short a = 254;
printbits(a);
for(i=0; i<7; ++i)
 {
  a = toleft(a);
  printbits(a);
 }

getchar();
return 0; 
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 04.11.2009, 08:13   #3
ssvd
Новичок
Джуниор
 
Регистрация: 03.11.2009
Сообщений: 2
По умолчанию

Цитата:
Сообщение от Sazary Посмотреть сообщение
Скажем, так:
Код:
#include <stdio.h>

void printbits(const short int a)
{
 short int i;
 for(i=128; i>=1; i>>=1)
  printf("%d",(a&i)?1:0); 
printf("\n");
}

short int toleft(short int a)
{
 int k;
 short int res;
 for(k=0; k<=7; ++k)
  if(!(a&(1<<k))) break;
 res = a;
 res |= (1<<k++);
 res &= ~(1<<k);
 return res; 
}

int main()
{
int i;
short a = 254;
printbits(a);
for(i=0; i<7; ++i)
 {
  a = toleft(a);
  printbits(a);
 }

getchar();
return 0; 
}
спасибо большое!
ssvd вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на ассемблере. Использование команд сдвига. SoundMan Помощь студентам 2 25.09.2008 21:17
Шифрование методом сдвига Paul Hindenburg Общие вопросы Delphi 5 24.01.2008 08:30
Операция сдвига? SkyDreamer Общие вопросы C/C++ 3 10.10.2007 08:20