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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
#1

Сочините пример как можно проще на сдвиг - C++

11.05.2012, 11:42. Просмотров 383. Ответов 5
Метки нет (Все метки)

Сочините пример как можно проще на сдвиг. Сам пользоваться умею, не могу только придумать новичковую задачу на эти операторы и как их проиллюстрировать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2012, 11:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Сочините пример как можно проще на сдвиг (C++):

можно написать ее как то проще ? - C++
#include <stdio.h> #include <locale.h> #include <string> #include <conio.h> int main() { setlocale(LC_CTYPE, "rus"); ...

нужно решить как можно проще - C++
в текстовом файле подсчитать количество строк, которые начинаются и оканчиваются одной и той же буквой

Можно ли это написать как то проще - C++
#include <cstdlib> #include <iostream> #include <stdlib.h> #include <math.h> using namespace std; /* В одномерном...

Поиск количества слов строке(как можно проще) - C++
Здравствуйте.Я недавно начал изучать с++ и столкнулся с проблемой. Нужно написать программу поиска количества слов строке, но как можно...

Нужно вычислить факториал 33, 100 и 1000 как можно проще - C++
Нужно вычислить фактариал 33, 100 и 1000 как можно проще

Как можно сделать данный кусок кода меньше и проще? - C++
Задние: Заменить все элементы с четными номерами на значение второго положительного элемента массива. void change() //замена элементов...

5
asidorchenko
379 / 205 / 25
Регистрация: 09.04.2012
Сообщений: 635
11.05.2012, 14:00 #2
Написать функцию, выводящую десятичное число в двоичной форме, учитывающую наличие/отсутствие знака. Если 255 то вывод 11111111
0
taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
11.05.2012, 14:01  [ТС] #3
Ну это сдвиг только в одну сторону и всегда на 1.
0
diagon
Higher
1930 / 1196 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
11.05.2012, 14:06 #4
Получить n-ую степень двойки.
0
Lucky_spirit
2 / 2 / 1
Регистрация: 10.05.2012
Сообщений: 45
11.05.2012, 14:27 #5
А что такое "сдвиги"? Не смеюсь. Просто, правда, не знаю.
0
asidorchenko
379 / 205 / 25
Регистрация: 09.04.2012
Сообщений: 635
11.05.2012, 17:49 #6
>>А что такое "сдвиги"?

Число представляет собой набор битов. Бит может принимать значение 0 или 1.
Переменная имеет определенный размер в байтах: char имеет размер в 8 бит, таким образом максимально представимое число данным примитивным типом данных это 127 ( если char знаковый).
short имеет размер в 2 байта, int имеет размер 4 байта.
Ключевое слово signed означает что 1 бит занимает знак.
Ключевое слово unsigned означает, что все биты занимает число.
Операционная система Windows являлась 32 битной, адресация от 00000000 до ffffffff

unsogned char 127 в двоичном виде это 01111111 ( 8 бит)

При сдвиге << на единицу 01111111 превратится в 11111110
При сдвиге << на два 01111111 превратится в 11111100
При сдвиге << на три 01111111 превратится в 11111000
При сдвиге << на четыре 01111111 превратится в 11110000
При сдвиге << на пять 01111111 превратится в 11100000
При сдвиге << на шесть 01111111 превратится в 11000000
При сдвиге << на семь 01111111 превратится в 10000000
При сдвиге << на восемь 01111111 превратится в 00000000

При сдвиге >> на единицу 01111111 превратится в 00111111
При сдвиге >> на два 01111111 превратится в 00011111
При сдвиге >> на три 01111111 превратится в 00001111
При сдвиге >> на четыре 01111111 превратится в 00000111
При сдвиге >> на пять 01111111 превратится в 00000011
При сдвиге >> на шесть 01111111 превратится в 00000001
При сдвиге >> на семь 01111111 превратится в 00000000
При сдвиге >> на восемь 01111111 превратится в 00000000

Примерs:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//вывод десятичного 18707 в двоичном виде
#include <stdio.h>
 
void main()
{
 printf("sizeof(unsigned int): %d \n", sizeof(unsigned int));
 unsigned int g = 18707;
 unsigned int g2;
 int j;
 for(j = 0;j < 32;j++)
 {
  g2 = g;
  g2 = g2 << j;
  g2 = g2 >> 31;
  printf("%d", g2);
 }
}

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//вывод десятичного 127 в двоичном виде
#include <stdio.h>
 
void main()
{
 printf("sizeof(unsigned int): %d \n", sizeof(unsigned int));
 unsigned char g = 127;
 unsigned char g2;
 int j;
 for(j = 0;j < 8;j++)
 {
  g2 = g;
  g2 = g2 << j;
  g2 = g2 >> 7;
  printf("%d", g2);
 }
}
1
11.05.2012, 17:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.05.2012, 17:49
Привет! Вот еще темы с ответами:

Выполнить перегрузку, именно для этого условия и как можно проще - C++
Помогите пожалуйста! Если можно, то как можно проще... Написать функцию min с переменным числом параметров, которая находит минимальное из...

Нужно написать программку по заданию, используя функции, как можно проще - C++
Дан интервал натуральных чисел . Напечатать на экране все те числа, которые принадлежат этому интервалу и которые можно выразить как сумму...

Числа Каталана,можно ли проще? - C++
Задание :Числа Каталана Cn, которые играют большую роль в комбинаторике (например, Cn равно числу полных бинарных деревьев с n+1 листьями),...

Оператор switch, можно ли сделать код проще? - C++
Дана задача посчитать гласные в тексте введенном с клавиатуры, вопрос ниже... #include &lt;iostream&gt; #include &lt;string&gt; #include...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru