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

Сдвиг 128-битного числа - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ списки типов http://www.cyberforum.ru/cpp/thread65686.html
Пожалуйста помогите составить пример списков типов состоящий из трех эллементов!!!!! И если не сложно провоментируйте сам пример.
C++ Как посчитать сложный факториал? Вопрос конечно до безобразия скучный и неинтересный, хотя кто знает....Но, как мне посчитать вот эту сумму??? Проблема в том, что я не могу посчитать то что под знаком суммы, т.е вывести ... http://www.cyberforum.ru/cpp/thread65555.html
C++ Переопределить поток вывода cout
Есть некоторый кусок кода выводящий на консоль информацию с помощью cout, все бы хорошо, но при некоторых условиях, бывает нужно выводить эту инфу в файл. Хотелось бы без дублирования кода, провести...
Visual Studio 2010 C++
Кто нибудь пробовал??? Хочу узнать отзывы...
C++ Не работает С++ http://www.cyberforum.ru/cpp/thread65230.html
Дело вот в чем: хоть даже если я пишу правильные программы, с++ все равно находит там ошибки. Думаю, что я не так установил ее. Вот и ошибка: http://s54.***********/i145/0911/50/ef81f215a368.jpg На...
C++ Аналог malloc Необходимо релизовать свой malloc.Интересует меня следующее: как malloc опирирует памятью? Я понимаю как составляется список блоков памяти. Но каким образом он получает эту память из кучи? Ведь перед... подробнее

Показать сообщение отдельно
TanT
эволюционирую потихоньку
465 / 463 / 43
Регистрация: 30.06.2009
Сообщений: 1,399
20.11.2009, 22:08
вообще сдвиг это у нас ещё с утра было << >>

в твоём случае надо плясать от того в каком виде задана твоя строчка,
16 байт это для 32битного Int -- int x[4]; а у тебя мож как по другому задан сей объём,
отслеживать придётся элементы массива в котором хранишь свои байты
вот что-то набросал для int

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include "iostream"
using namespace std;
 
 
int main()
{
    const int numCell=16/sizeof(int);
    int arr[numCell] = {0, 0, 1, 1};
    const int shift =33;
 
    int bitInCell=8*sizeof(int);
    int numElem=shift/bitInCell;
    int bitRemains=shift-numElem*bitInCell;
    
    cout<<"numElem: "<<numElem<<" bitRemains: "<<bitRemains<<endl;
    for (int i=numCell; --i>=0;) cout<<" "<<arr[i];
    cout<<endl;
    if (numElem)    // если сдвиг на ячейки
    {
        for (int i=numCell; --i>=numElem;)  arr[i]=arr[i-1]; // сдвигаем влево ячейки
        for (int i=numElem; --i>=0;)    arr[i]=0;               // новые ячейки соответсвенно пустые
    }
 
 
    if (bitRemains) // если ещё и биты подвинуть
    { int first=((numElem>1)?numElem:1);        
        for (int i=numCell; --i>=first;)
        {   
            arr[i]=arr[i]<<bitRemains+(arr[i-1]>>(bitInCell-bitRemains));
        }
        arr[first-1]=arr[first-1]<<bitRemains;
    }
 
    for (int i=numCell; --i>=0;)  cout<<" "<<arr[i];
    cout<<endl;
 
    cout << endl;   system("PAUSE");
    return 0;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru