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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ списки типов http://www.cyberforum.ru/cpp/thread65686.html
Пожалуйста помогите составить пример списков типов состоящий из трех эллементов!!!!! И если не сложно провоментируйте сам пример.
C++ Почему цикл не заканчивается??? Всем добрый день! У меня здесь вопрос по циклу while. Вот программа по подсчёту букв и сочетаний в тексте: #include <iostream> #include <string> #include <ctype.h> void main() { using namespace std; string str; int aCnt=0, eCnt=0, iCnt=0, oCnt=0, uCnt=0, consonantCnt=0, ffCnt=0, flCnt=0, fiCnt=0; http://www.cyberforum.ru/cpp/thread65638.html
Как посчитать сложный факториал? C++
Вопрос конечно до безобразия скучный и неинтересный, хотя кто знает....Но, как мне посчитать вот эту сумму??? Проблема в том, что я не могу посчитать то что под знаком суммы, т.е вывести закономерность: на что нужно умножить прошлое число, чтобы получить следующее....чтобы потом его в цикл записать, типа в начале объявляем p=1, а потом в цикле p=p*(что-то). Если кто разбереться, то напишите,...
C++ Переписать элементы матрицы по убыванию
Для заданной матрицы переписать ее элементы в векторном виде по убыванию
C++ Переопределить поток вывода cout http://www.cyberforum.ru/cpp/thread65288.html
Есть некоторый кусок кода выводящий на консоль информацию с помощью cout, все бы хорошо, но при некоторых условиях, бывает нужно выводить эту инфу в файл. Хотелось бы без дублирования кода, провести эту операцию, то есть вывести в файл, с помощью cout. Реально ли это? Файл использую - ofstream fout("output.txt"); В Delphi это делалось просто - rewrite(output, "output.txt") А в С++, что-то...
C++ Visual Studio 2010 Кто нибудь пробовал??? Хочу узнать отзывы... подробнее

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

в твоём случае надо плясать от того в каком виде задана твоя строчка,
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;
}
 
Текущее время: 02:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru