С Новым годом! Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
 Аватар для Рогалик
0 / 0 / 1
Регистрация: 10.01.2014
Сообщений: 8

Можно ли осуществить сдвиг таким образом?

18.01.2014, 03:41. Показов 1056. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Инициализируем переменную:
Code
1
unsigned char a=0b00000000;
далее осуществим сдвиг:
Code
1
 a=1<<2;
результат сдвига:
Code
1
а=ob00000010;
Верно ли рассуждение описанное выше?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.01.2014, 03:41
Ответы с готовыми решениями:

Осуществить циклический сдвиг массива таким образом, чтобы последний элемент стал максимальным
Напишите программу по простому Дан массив B(20).Осуществить циклический сдвиг таким образом,чтобы последний элемент массива стал...

Каким образом осуществить циклический сдвиг на К элементов вправо в массиве?
Объясните пожалуйста ход решения задачи: : В массиве A(N) осуществите циклический сдвиг на K элементов вправо (K &lt; N): последние...

В тексте в каждой строке осуществить перестановку символов таким образом, чтобы. первый символ стал последним, второй предпоследним и т.д
Срочно!! Помогите написать код программы, завтра сдавать. . В тексте в каждой строке осуществить перестановку символов таким образом,...

6
59 / 56 / 38
Регистрация: 04.12.2013
Сообщений: 105
18.01.2014, 04:25
Цитата Сообщение от Рогалик Посмотреть сообщение
Можно ли осуществить сдвиг таким образом?
Да. Но результат немного другой:
Code
1
a = 0b00000100;
Во второй строке единица сдвигается на две позиции влево, затем результат присваивается переменной.
1
 Аватар для Рогалик
0 / 0 / 1
Регистрация: 10.01.2014
Сообщений: 8
18.01.2014, 13:11  [ТС]
Почему так получилось?
Предположим, что у нас есть переменная:
Code
1
unsigned char c=0b00000001;
при осуществлении того же самого сдвига (c=1<<2), мы получим:
Code
1
c=0b00000100;
Я переместил единицу, находящуюся в нулевом разряде числа на два бита, первый бит-это первый разряд числа, второй бит- второй разряд числа, единица теперь находится во втором разряде числа. Проверка: при сдвиге влево, нужно умножить изначальное число на 2n (n-шаг сдвига, в нашем случае это 2), умножаем единичку (значение переменной "с" до сдвига), на четыре, получаем четыре (значение переменной "с" после сдвига). Всё верно, значение переменной после сдвига 4 (т. к в бинарной записи 1-ка находится во второй разряде числа).
Если логика описанная выше верна, то вопрос остаётся тем же, как получалось значение переменной "а", во 2-м сообщении темы?
0
59 / 56 / 38
Регистрация: 04.12.2013
Сообщений: 105
18.01.2014, 13:52
Рогалик, если я правильно понял вопрос, то:
1) То, что присвоили в первой строке, (ноль или единицу или 150), роли не играет. Новое значение, выработанное во второй строке, (1 << 2), затрёт старое значение.

2) Если нужно сдвинуть именно то, что присвоили в первой строке, нужно изменить вторую строку:
Code
1
a = a << 2;
или короче:
Code
1
a <<= 2;
1
 Аватар для Рогалик
0 / 0 / 1
Регистрация: 10.01.2014
Сообщений: 8
18.01.2014, 14:06  [ТС]
Наверно я неверно сформулировал вопрос.
Почему, если изначально значение переменной равняется нулю:
Code
1
unsigned char a=0b00000000;
при осуществлении сдвига:
Code
1
a=1<<2;
Значение переменной станет:
Code
1
a=0b00000100;
Почему так? Почему единичка оказывается именно во втором разряде преременной, а не в первом, как предполагал я?
0
59 / 56 / 38
Регистрация: 04.12.2013
Сообщений: 105
18.01.2014, 15:53
Рогалик,
Всё дело во второй строке:
Code
1
a = 1 << 2;
1) Берётся единица. В двоичной записи 0b00000001. Т.е. в нулевом разряде уже находится 1.
2) Сдвигаем её два раза влево (1 << 2). В результате получаем 0b00000100.
3) Записываем результат в переменную (a = 0b00000100).

А то, что там раньше в переменной был записан ноль, значение не имеет. Он затирается.

Добавлено через 55 минут
Оператор << запихивает в число ТОЛЬКО нули. Количество нулей указывается справа от оператора. В данном случае два нуля. Эти нули пихают содержимое влево.

Оператор << не может запихнуть единицу. Только нули.
1
 Аватар для Рогалик
0 / 0 / 1
Регистрация: 10.01.2014
Сообщений: 8
18.01.2014, 18:01  [ТС]
Спасибо большое, вы заставили взглянуть на задачу по другому. Я всё понял, спасибо вам.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.01.2014, 18:01
Помогаю со студенческими работами здесь

Можно ли таким образом написать запрос?
$query = &quot;SELECT * FROM cars WHERE id='&quot;; $query .= '&lt;script language=&quot;javascript&quot;&gt;'; $query .= '$(&quot;#hidden_id&quot;).html(id)'; $query .=...

Можно ли таким образом спроектировать интерфейс?
Есть задача, которая имеет такой интерфейс: Т.е. есть главный модуль (на картинке представлен нижним окном). В главном модуле есть...

Можно ли записать множество таким образом?
Есть множество X = { -5,-4,-3,-2,-1,1,2,3,4,5 }. Это правильно записать его так, как показано ниже, если запрещено перечисление элементов...

Можно ли таким образом защитить программу
Допустим, известны основные утилиты и программы для взлома c#. Во время работы нашей программы просто проверяем, не запущен ли какие-нибудь...

Можно ли сократить запись кода таким образом?
a=input() #из ' * *Hello *world ' делаю 'Hello, world' a.strip(' ') a=', '.join(a.split(' ')) Можно первое заменить на второе? ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru