Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Сложности с побитовым сдвигом

88K
24 февраля 2013 года
Макс Федоров
3 / / 24.02.2013
Мы вводим число в формате double, затем вводим номер старшего бита(произвольно) и количество разрядов, при этом получается определенная "группа", внутри которой надо сделать циклический сдвиг вправо и влево. Как работать внутри "группы", а не двигать все число сразу?
88K
24 февраля 2013 года
Макс Федоров
3 / / 24.02.2013
union
{
char CH[8];
double DO;
}uni;
puts("Vvedite chislo (double):");
scanf("%lf",&uni.DO);
printf("%lf\n",uni.DO);
for(i=63;i>=0;i--){
printf("%d",(uni.CH[i/8]>>(i%8))&1);
if(i%8==0) printf(" ");
}
puts("\nVvedite nomer starshego bita:");
int starbit, group, k;
char nCH[6];
scanf("\n%d",&starbit);
puts("Vvedite kolichestvo razryadov:");
scanf("\n%d",&group);
for(;starbit>=0&&group>=0;starbit--,group--)
{
nCH[starbit/8]|=(1<<(starbit%8));
if(((uni.CH[starbit/8]>>(starbit%8))&1)==0){nCH[starbit/8]^=(1<<(starbit%8));}
}
88K
24 февраля 2013 года
Макс Федоров
3 / / 24.02.2013
вот код, но что-то в нем не так явно
446
24 февраля 2013 года
Meander
487 / / 04.09.2011
Цитата:
Как работать внутри "группы", а не двигать все число сразу?


wtf?

446
24 февраля 2013 года
Meander
487 / / 04.09.2011
У процессора отсутствуют команды прямой адресации битов. Поразрядные операции выполняют одну и ту же операцию над всеми разрядами машинного слова одновременно. Поэтому для работы внутри "группы" надо делать специальные функции инкапсулирующие геморрой.
392
24 февраля 2013 года
cronya
421 / / 03.01.2009
Цитата:
Как работать внутри "группы", а не двигать все число сразу?

а чего сложного? переводите ваше число в в нули и единицы, назначаете старший бит, от которого делаете сдвиг, в группу записываете от назначенного старшего бита до меньшего, сдвигаете, переводите опять в ту систему счисления которая нужная, предварительно соединив группу с той частью,которая до старшего бита.
Вопрос сразу такой?! Что значит вводим число и вводим число разрядов произвольно? Такого быть не может :)

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог