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

Ввести число и вывести результат циклического сдвига его битов на 1 разряд влево - C++

Восстановить пароль Регистрация
 
IProvokator
0 / 0 / 0
Регистрация: 18.12.2013
Сообщений: 43
23.12.2013, 14:24     Ввести число и вывести результат циклического сдвига его битов на 1 разряд влево #1
Проверьте пожалуйста, правильное ли решение.
Ввести число и вывести результат циклического сдвига его битов на 1 разряд влево (все биты кроме старшего сдвигаются на 1 разряд влево, а старший бит ставится на освободившееся место в младшем разряде).
Вот что получилось:
C++ (Qt)
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
#include<iostream>
using namespace std;
int main()
{ 
int x,x1,x2,x3;
cout<<"Vvedite 4islo:";
cin>>x;
x1=x2=x;
cout<<"Vawe 4islo v 2-oi forme: ";
for (int i=31; i>=0;i--)
{
cout<<(x>>i&1);
}
cout<<endl;
x=pow(double(2),31);
x1=x1&x;
x2=x2<<1;
if (x1==x)
{
x2=x2|1;
cout<<"Resu'tat: ";
}
else {
 
cout<<"Resu'tat: ";
}
for (int i=31; i>=0;i--)
{
cout<<(x2>>i&1);
}
cout<<endl;
 
}
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.12.2013, 14:24     Ввести число и вывести результат циклического сдвига его битов на 1 разряд влево
Посмотрите здесь:

C++ Ввести целое число N, вывести его в 8-ричной системе счисления
Ввести шестизначное число и вывести его в определенном формате и округлить C++
Округление числа до двух знаков после запятой C++
Циклический сдвиг числа C++
Реализовать функции шифровки и дешифровки методом циклического сдвига битов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
23.12.2013, 14:39     Ввести число и вывести результат циклического сдвига его битов на 1 разряд влево #2
C++
1
x = ((x&0x80000000)>>31) | (x<<1)
еси ничего не напутал
IProvokator
0 / 0 / 0
Регистрация: 18.12.2013
Сообщений: 43
23.12.2013, 14:41  [ТС]     Ввести число и вывести результат циклического сдвига его битов на 1 разряд влево #3
aLarman, Не очень понял, это что?
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
23.12.2013, 14:44     Ввести число и вывести результат циклического сдвига его битов на 1 разряд влево #4
Сообщение было отмечено автором темы, экспертом или модератором как ответ
это то на что можно заменить
C++
1
2
3
4
5
6
7
8
9
10
11
12
x=pow(double(2),31);
x1=x1&x;
x2=x2<<1;
if (x1==x)
{
x2=x2|1;
cout<<"Resu'tat: ";
}
else {
 
cout<<"Resu'tat: ";
}
IProvokator
0 / 0 / 0
Регистрация: 18.12.2013
Сообщений: 43
23.12.2013, 14:48  [ТС]     Ввести число и вывести результат циклического сдвига его битов на 1 разряд влево #5
aLarman, спасибо)), ну а так в принципе все получилось верно?
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
23.12.2013, 14:53     Ввести число и вывести результат циклического сдвига его битов на 1 разряд влево #6
Цитата Сообщение от IProvokator Посмотреть сообщение
а старший бит ставится на освободившееся место в младшем разряде
где он ставится? в коде не вижу

Добавлено через 49 секунд
а
Цитата Сообщение от IProvokator Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
if (x1==x) 
{ 
x2=x2|1;
 cout<<"Resu'tat: "; 
} 
else 
{ 
cout<<"Resu'tat: "; 
}
не совсем это делает

Добавлено через 1 минуту
сорь, затупил вроде правильно все

Добавлено через 27 секунд
забыл что x это 2 в 31ой
IProvokator
0 / 0 / 0
Регистрация: 18.12.2013
Сообщений: 43
23.12.2013, 14:54  [ТС]     Ввести число и вывести результат циклического сдвига его битов на 1 разряд влево #7
aLarman, при вводе числа у меня старший бит это самый левый бит, или самая левая единица?
aLarman
636 / 557 / 89
Регистрация: 13.12.2012
Сообщений: 2,109
23.12.2013, 14:56     Ввести число и вывести результат циклического сдвига его битов на 1 разряд влево #8
Цитата Сообщение от IProvokator Посмотреть сообщение
при вводе числа у меня старший бит это самый левый бит, или самая левая единица?
это самый левый бит, т.е для инта который 4 байта (32 бита ) это самый первый бит, вообще говоря для знакового числа, первый бит показывает знак, т.е если первый бит 1 это число меньше нуля, если 0 - то больше нуля
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.12.2013, 15:00     Ввести число и вывести результат циклического сдвига его битов на 1 разряд влево
Еще ссылки по теме:

C++ Ошиба циклического сдвига
Преобразовать целочисленный массив путем сдвига его элементов на k позиций влево C++
C++ Вывести результат последовательного применения циклического сдвига вправо заданной последовательности k раз

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

Или воспользуйтесь поиском по форуму:
IProvokator
0 / 0 / 0
Регистрация: 18.12.2013
Сообщений: 43
23.12.2013, 15:00  [ТС]     Ввести число и вывести результат циклического сдвига его битов на 1 разряд влево #9
aLarman, если просто самый левый бит, то вроде должно быть правильно
Yandex
Объявления
23.12.2013, 15:00     Ввести число и вывести результат циклического сдвига его битов на 1 разряд влево
Ответ Создать тему
Опции темы

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