Форум программистов, компьютерный форум 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 опирирует памятью? Я понимаю как составляется список блоков памяти. Но каким образом он получает эту память из кучи? Ведь перед... подробнее

Показать сообщение отдельно
manfeese
129 / 128 / 16
Регистрация: 04.01.2009
Сообщений: 415
23.11.2009, 11:24
Вот циклический сдвиг
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <iostream.h>
#include <conio.h>
 
using namespace std;
 
enum TShiftState {Left=0,Right};
void StringShift (char *S, int StringSize, int bits, TShiftState SState)
{
 int Carr1=0,Carr2=0;
 
 if (SState)
 {
  //========== Сдвиг впарво ===========
  for (int j = 0; j < bits; j++)
  {
    Carr2=0;
    for (int i = 0; i < StringSize-1; i++)
    {
      (S[i] & 1) == 1 ? Carr1 = 0x80 : Carr1 = 0;
      S[i]>>=1;
         if ( (S[i] & 0x80) == 0) S[i]+=Carr2;
         else if (Carr2==0) S[i]+=0x80;
      Carr2=Carr1;
    }
     if ( (S[0] & 0x80) == 0) S[0]+=Carr2;
     else if (Carr2==0) S[0]+=0x80;
  }
  //===================================
 }
 else
 {
  //=========== Сдвиг влево ===========
  for (int j = 0; j < bits; j++)
  {
    Carr2=0;
    for (int i = StringSize-2; i >=0; i--)
    {
      (S[i] & 0x80) == 0x80 ? Carr1 = 1 : Carr1 = 0;
      S[i]<<=1;
      S[i]+=Carr2;
      Carr2=Carr1;
    }
      S[StringSize-2]+=Carr2;
  }
  //===================================
 }
}
 
int main()
{
    char S[] = "0123456789abcdef";              //  строка любых значений
    StringShift(S,sizeof(S),(sizeof(S)-1)*8,Left);
    cout<<S;
 
    getch();
    return 0;
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru