Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Сдвиги - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сортировка в С++Борланд в.6 http://www.cyberforum.ru/cpp-beginners/thread90822.html
Подскажите кто нибудь как написать сортировку, ну чтоб из главного меню можно было поставить сортировать А-Я или Я-А предприятия Добавлено через 2 минуты то есть как отсортировать список :)
C++ натуральный логарифм по каким причинам натуральный логарифм может выдавать неточное число, а точнее неправильное число. например z=log(4*x); при х равном одному или что эквивалентно log(4),результат которого должен быть... http://www.cyberforum.ru/cpp-beginners/thread90814.html
Удаление динамического массива строк C++
Здравствуйте! У меня проблема с удалением массива строк.Создал класс с полем - char** str; резервирую память(делаю это в конструкторе) str = new char*; for(int i=0;i<n;i++) str = new char;...
CodeBlocks::Microsoft VC++ C++
Здрасти, до недавнего времени я работал в CodeBlocks, там главная функция имеет вид int main(){ ...... } потом скачал microsoft VC++ Express Edition, там вот так: int _tmain(){ ......
C++ Как редактировать файл на сайте\прочитать http://www.cyberforum.ru/cpp-beginners/thread90746.html
скажем на сайте есть файл.тхт,хочу редактировать ее,и вывести на экран его содержание...таким образом я напишу чат,но сайт будет на юкзое,можно ли так?насколько я знаю в таких функцциях используется...
C++ вложеные циклы нужно напечатать ромб из символов используя 2 цикла и два оператора вывода которые печатают "*" и " " соответственно подробнее

Показать сообщение отдельно
fasked
Эксперт С++
4945 / 2525 / 180
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
29.01.2010, 20:13  [ТС]
Цитата Сообщение от TanT Посмотреть сообщение
мож это?
Сдвиг нужен битовый.
Такой алгоритм подойдет, если заиметь реверс битов только нужной части числа.

Добавлено через 33 минуты
Поправил битовый сдвиг вправо, влево будет аналогичен, но что-то коряво как-то смотрится

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
void wshr(WORD32 * X, int s, int size)
{
    WORD32 t = 0, c = 0;
    for(int i = 0; i < size; i++)
    {
        t       = X[i];
        X[i]    = (t >> s) | c;
        c       = (t << (BITSONWORD - s));
    }
}
 
void _wshr(WORD32 * X, int s, int size)
{
    WORD32 * T = new WORD32[size];
    memset(T, 0, size);
    for(int i = s/BITSONWORD, j = 0; i < size; i++, j++)
    {
        T[i] = X[j];
    }
    wshr(T, s%BITSONWORD, size);
    wcpy(X, T, size); // копирование массивов
    delete[] T;
}
Вот пример использования (сдвиг на 36 бит) и результат
C++
1
2
WORD32 x[] = { 0x12345678, 0xabcdefff, 0xa1b2c3d4 };
_wshr(x, 36, 3);
Код
HEX - 00000000 001234567 8ABCDEFF
BIN - 0000 0000 0000 0000 0000 0000 0000 0000
0000 0001 0010 0011 0100 0101 0110 0111
1000 1010 1011 1100 1101 1110 1111 1111
Теперь можно начинать разбираться с циклическими сдвигами
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru