Форум программистов, компьютерный форум, киберфорум
C (Си)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,520
1

Циклический сдвиг влево на один разряд: Есть ли здесь UB?

13.05.2016, 09:56. Показов 543. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Сначала написал, потом задумался

циклический сдвиг влево на один разряд
C
1
2
3
4
unsigned char ROL(unsigned char a)
{
 return (a>>7)|(a<<1);
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.05.2016, 09:56
Ответы с готовыми решениями:

Циклический сдвиг влево на один разряд
Здравствуйте, помогите пожалуйста разобрать задачу на Ассемблере. Содержание таково: Произвести...

Выполнить циклический сдвиг двоичного числа влево на один разряд, используя Нормальные Алгоритмы Маркова
Условие задания (Помогите пожалуйста с защитой) Выполнить циклический сдвиг двоичного числа в лево...

Циклический сдвиг массива на один элемент влево
Дана последовательность действительных чисел A1,A2,…,AN. Преобразовать ее таким образом, чтобы...

Осуществите циклический сдвиг компонент заданного вектора A(N) влево на одну позицию, то есть получите вектор А = (a2 , a3 , ., aN , a1 )
Помогите пожалуйста. Осуществите циклический сдвиг компонент заданного вектора A(N) влево на одну...

4
Жарю без масла
867 / 749 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
13.05.2016, 11:42 2
в случае с unsigned можно. UB здесь нет
1
Evg
Эксперт CАвтор FAQ
21279 / 8301 / 637
Регистрация: 30.03.2009
Сообщений: 22,659
Записей в блоге: 30
13.05.2016, 13:40 3
У операций сдвига UB бывает в случаях, когда величина сдвига некорректная (меньше нуля или больше, чем размер типа) и в случае знакового типа у сдвигаемого аргумента. У тебя нет ни того, ни другого
1
Модератор
Эксперт по электронике
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,520
13.05.2016, 15:49  [ТС] 4
Цитата Сообщение от retmas Посмотреть сообщение
UB здесь нет
Цитата Сообщение от Evg Посмотреть сообщение
У тебя нет ни того, ни другого
да это то понятно
этот код должен компилироваться во что то типа
C
1
2
3
4
unsigned char tmp1=a>>7;
unsigned char tmp2=a<<1;
unsigned char tmp3=tmp1|tmp2;
return tmp3;
вот я и задумался, точнее в голову ударило, а не может ли какой-нибудь шибко умный оптимизатор уменьшить сей код
что то типа
C
1
2
a<<=1;
a>>=7;
уже нарывался на умные оптимизаторы, перестраховываюсь
0
Жарю без масла
867 / 749 / 225
Регистрация: 13.01.2012
Сообщений: 1,702
13.05.2016, 15:54 5
Цитата Сообщение от ValeryS Посмотреть сообщение
а не может ли какой-нибудь шибко умный оптимизатор уменьшить сей код
не может(не должен). компиль не должен из корректного кода делать некорректный(с ub). ведь не придет же в голову, что
C
1
(x + 1) + (x + 1)
заменится на
C
1
x++ + x++
1
13.05.2016, 15:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.05.2016, 15:54
Помогаю со студенческими работами здесь

Осуществить циклический сдвиг компонент заданного вектора A(N) влево на одну позицию, то есть получить вектор A = ( a2 , a3 , . , aN, a1 ) Как это с
Осуществить циклический сдвиг компонент заданного вектора A(N) влево на одну позицию, то есть...

Логический сдвиг влево,логический сдвиг вправо,алгоритм обмена двух переменных,циклический сдвиг
Битовые сдвиги.FW4,msstudio 13,на C# 1)Реализовать быстрое умножение на 2(логический сдвиг влево)...

Циклический сдвиг влево
Помогите написать программу которая будет осуществлять циклический сдвиг влево введённого числа на...

циклический сдвиг в влево на n
помогите пожалуйста,мне нужно выполнить задание я не знаю как вот задание: с помощью excel...

Линейный сдвиг на один разряд
Здравствуйте. В общем задание: Разработать функцию void BigShr(byte* M1, byte* Carry, short len),...

Циклический сдвиг массива влево
Дан массив y1, ... , y20. Сформировать массив Z1, ... , Z20, элементы которого соответствуют...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru