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

эвм-умножение со сдвигом влево на c++ - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 22, средняя оценка - 4.91
Verzhina
0 / 0 / 0
Регистрация: 09.04.2012
Сообщений: 90
19.04.2012, 01:18     эвм-умножение со сдвигом влево на c++ #1
задали лабораторную,нужно написать программу на c++ которая производит умножение со сдвигом влево.позно вспомнила,не успеваю.подскажите как перевести из десяти4ной системы в двоичную чтоб потом удобно было использовать сдвиг и побитовое сравнение.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kazak
 Аватар для kazak
3029 / 2350 / 155
Регистрация: 11.03.2009
Сообщений: 5,401
19.04.2012, 02:19     эвм-умножение со сдвигом влево на c++ #2
Во-первых что есть умножение со сдвигом влево?
Во-вторых числа в компьютере и так хранятся в двоичном виде.
Avazart
 Аватар для Avazart
6897 / 5137 / 252
Регистрация: 10.12.2010
Сообщений: 22,570
Записей в блоге: 17
19.04.2012, 03:57     эвм-умножение со сдвигом влево на c++ #3
Имеется ввиду что сдвиг влево и есть операция умножения
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <bitset> // использую для вывода в двоичном виде
using namespace std;
//---------------------------------------------------------------------------
#pragma argsused
int _tmain(int argc, _TCHAR* argv[])
{
int a,b;
a=7;
b=a<<2;  // a умножить на три ( два раза сдвинуть влево )
 
cout<<a<<" -> "<<bitset<8>(a)<<endl;   // 7
cout<<b<<" -> "<<bitset<8>(b)<<endl;  // 7*3=28
 
system("pause");
return 0;
}
//---------------------------------------------------------------------------
PanzerMeister
 Аватар для PanzerMeister
0 / 0 / 0
Регистрация: 14.04.2012
Сообщений: 17
19.04.2012, 04:19     эвм-умножение со сдвигом влево на c++ #4
\CodeBlocksProg\learning\main.cpp|5|warning: ignoring #pragma argsused |
\CodeBlocksProg\learning\main.cpp|6|error: '_TCHAR' has not been declared|
\CodeBlocksProg\learning\main.cpp||In function 'int _tmain(int, int**)':|
\CodeBlocksProg\learning\main.cpp|15|error: 'system' was not declared in this scope|
||=== Build finished: 2 errors, 1 warnings ===|
из за чего?
Avazart
 Аватар для Avazart
6897 / 5137 / 252
Регистрация: 10.12.2010
Сообщений: 22,570
Записей в блоге: 17
19.04.2012, 04:28     эвм-умножение со сдвигом влево на c++ #5
Из-за того что другое IDE,я пишу в Builder2009
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <bitset> // использую для вывода в двоичном виде
using namespace std;
//---------------------------------------------------------------------------
int main()
{
int a,b;
a=7;
b=a<<2;  // a умножить на три ( два раза сдвинуть влево )
 
cout<<a<<" -> "<<bitset<8>(a)<<endl;   // 7
cout<<b<<" -> "<<bitset<8>(b)<<endl;  // 7*3=28
 
// getch() или  другая её модификация чтоб консоль не проподала сразу
return 0;
}
//---------------------------------------------------------------------------
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
19.04.2012, 04:36     эвм-умножение со сдвигом влево на c++ #6
Цитата Сообщение от Avazart Посмотреть сообщение
7*3=28
Это что за математика такая?
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,155
Завершенные тесты: 1
19.04.2012, 07:25     эвм-умножение со сдвигом влево на c++ #7
Цитата Сообщение от Toshkarik Посмотреть сообщение
что что за математика такая?
Такая система счисления (0- единица,1 -двойка, 2 - тройка, 3 -четверка....)
Думаю, что такая ошибка - следствие того, что индексы в массивах начинаются с нуля.
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
19.04.2012, 11:27     эвм-умножение со сдвигом влево на c++ #8
zss, о чем вы? При сдвиге идет умножение на степень двойки. То есть в данном случае было умноженно 7 на 22, аналогично если сдвинуть на 3 влево, получится 56, то есть сдвиг будет аналогичен умножению 7 на 23, и т.д.
Nekto
19.04.2012, 11:44
  #9

Не по теме:

7*3=28 - это эпично

Avazart
 Аватар для Avazart
6897 / 5137 / 252
Регистрация: 10.12.2010
Сообщений: 22,570
Записей в блоге: 17
19.04.2012, 17:53     эвм-умножение со сдвигом влево на c++ #10
Да поздно было запарился когда писал коменты

Один сдвиг влево <<1 это a*2, а два соответственно а*2*2 т.е на a*4
Taras_Z
 Аватар для Taras_Z
100 / 84 / 2
Регистрация: 27.10.2010
Сообщений: 534
Записей в блоге: 2
19.04.2012, 17:55     эвм-умножение со сдвигом влево на c++ #11
удалено
Verzhina
0 / 0 / 0
Регистрация: 09.04.2012
Сообщений: 90
19.04.2012, 20:31  [ТС]     эвм-умножение со сдвигом влево на c++ #12
[QUOTE=kazak;2928636]Во-первых что есть умножение со сдвигом влево?
Миниатюры
эвм-умножение со сдвигом влево на c++   эвм-умножение со сдвигом влево на c++  
Avazart
 Аватар для Avazart
6897 / 5137 / 252
Регистрация: 10.12.2010
Сообщений: 22,570
Записей в блоге: 17
19.04.2012, 20:52     эвм-умножение со сдвигом влево на c++ #13
Мда блин, тот кто это написал врятли читал что написал...
Думаю подразумевается это
http://www.distedu.ru/mirror/_inform.../inform/6.html
Verzhina
0 / 0 / 0
Регистрация: 09.04.2012
Сообщений: 90
19.04.2012, 20:57  [ТС]     эвм-умножение со сдвигом влево на c++ #14
это написал мой преподаватель,и мне надо написать программу именно так,надо выводить на экран так же как нарисовано в примере))
Avazart
 Аватар для Avazart
6897 / 5137 / 252
Регистрация: 10.12.2010
Сообщений: 22,570
Записей в блоге: 17
19.04.2012, 21:06     эвм-умножение со сдвигом влево на c++ #15
Ничё не понял из примера, что такое RGA и RGB,RGP?
Verzhina
0 / 0 / 0
Регистрация: 09.04.2012
Сообщений: 90
19.04.2012, 21:13  [ТС]     эвм-умножение со сдвигом влево на c++ #16
RGA и RGB это регистры с цифрами которые надо умножить, а RGP ето чтото вроде результата (часное произведение).циклов столько,сколько разрядов множителя.
Avazart
 Аватар для Avazart
6897 / 5137 / 252
Регистрация: 10.12.2010
Сообщений: 22,570
Записей в блоге: 17
19.04.2012, 23:13     эвм-умножение со сдвигом влево на c++ #17
Так и не разобрался с примером, так и не понял например что делается с регистром B и почему он с каждым шагом меняется.
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
#include <iostream>
#include <bitset>
//---------------------------------------------------------------------------
#pragma argsused
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int a=13,b=11,p=0;
bitset<4> B(b);
 
cout<<"--RgP------RgB----"<<endl;
for(int i=0;i<4;i++)
 {
 cout<<bitset<8>(p)<<"   "<<B[i]<<" shift"<<endl;
 if(B[i])
    {
    p+=a<<i;
      cout<<bitset<8>(p)<<"   "<<B[i]<<" add"<<endl;
    }
 else cout<<bitset<8>(p)<<"   "<<B[i]<<" no add"<<endl;
 cout<<"-------------------"<<endl;
 }
system("pause");
return 0;
}
//---------------------------------------------------------------------------
kazak
19.04.2012, 23:39
  #18

Не по теме:

Я так понимаю это обычное умножение в столбик, только в двоичном виде.

Avazart
 Аватар для Avazart
6897 / 5137 / 252
Регистрация: 10.12.2010
Сообщений: 22,570
Записей в блоге: 17
19.04.2012, 23:53     эвм-умножение со сдвигом влево на c++ #19
Оно самое!
Там под примером написано: "Умножение методом сдвига влево", только пример непонятно как оформлен
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.04.2012, 01:32     эвм-умножение со сдвигом влево на c++
Еще ссылки по теме:

C++ Удаление элементов вектора со сдвигом
Вывод времени со сдвигом на час C++
C++ Задано 4 матрицы. Провести сложение, умножение, умножение на число

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Verzhina
0 / 0 / 0
Регистрация: 09.04.2012
Сообщений: 90
20.04.2012, 01:32  [ТС]     эвм-умножение со сдвигом влево на c++ #20
каждый раунд начинается со сдвига B и P влево на 1 разряд,проверяется подчеркнутый разряд в предыдущем раунде если там 1 то A прибавляется к P,если 0 то после сдвига ни4его не меняется.и так столько раз сколько разрядов в умножаемых цифрах,по этому мне надо чтоб переводя из десятичной в двоичную лишних нулей небыло.в итоге получаем правельный ответ 11*13=143.


надеюсь смогла внятно обьяснить,я привыкла ко всей этой терминалогии на армянском))
Yandex
Объявления
20.04.2012, 01:32     эвм-умножение со сдвигом влево на c++
Ответ Создать тему
Опции темы

Текущее время: 08:13. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru