|
0 / 0 / 0
Регистрация: 13.12.2014
Сообщений: 4
|
|
Как работают побитовые сдвиги?13.04.2007, 19:36. Показов 88516. Ответов 58
Метки нет (Все метки)
0
|
|
| 13.04.2007, 19:36 | |
|
Ответы с готовыми решениями:
58
Побитовые сдвиги Побитовые сдвиги
|
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|||||||||||||||||||||||||||
| 26.12.2017, 23:10 | |||||||||||||||||||||||||||
|
Байт, у которого включен только один бит RXEN можно написать следующими способами:
Включить его можно с помощью логического побитового или
Добавлено через 2 минуты (1<<4) - (1<<RXEN). Чем если бы задефанили именно маску данного бита.Добавлено через 7 минут Потому что все подобные константные выражения компилятор считает сам, и записывает в машинный код уже в виде готового числа.
1
|
|||||||||||||||||||||||||||
|
0 / 0 / 0
Регистрация: 30.06.2015
Сообщений: 209
|
|||
| 27.12.2017, 01:15 | |||
|
Просто этот способ верен, только если RXEN равен 0, а если в предыдущей операции его состояние изменилось на "1", то мне почему-то кажется, что он в "0" установится, только установив одновременно в 1 следующий разряд.
0
|
|||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|||||||||
| 27.12.2017, 01:30 | |||||||||
|
А если не могут, то куда по-твоему должен убежать бит RXEN ? Или смещение этого бита, записанное в RXEN ? Добавлено через 1 минуту
Добавлено через 2 минуты
1
|
|||||||||
|
0 / 0 / 0
Регистрация: 30.06.2015
Сообщений: 209
|
|||
| 27.12.2017, 01:44 | |||
|
так если
если это бит? Добавлено через 2 минуты
0
|
|||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|||||||||||||||||||||
| 27.12.2017, 02:44 | |||||||||||||||||||||
|
в записи
(1<<RXEN) он двигает единицу из состояния
Добавлено через 3 минуты А в записи
1
|
|||||||||||||||||||||
|
Модератор
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
|
||||||||
| 27.12.2017, 09:37 | ||||||||
делают так чтобы с меньшей кровью переходить с камня на камень в микроконтроллерах тема не раз обсуждалась Добавлено через 1 минуту это аппаратно зависимые биты и каждый зависит от конкретного типа микроконтроллера
1
|
||||||||
|
|
||
| 27.12.2017, 09:46 | ||
Биты регистра изменяются когда ты пишешь UCSRB = UCSRB | маска нужных битов
0
|
||
|
0 / 0 / 0
Регистрация: 30.06.2015
Сообщений: 209
|
||||||||
| 27.12.2017, 15:28 | ||||||||
|
То есть 1 может быть сдвинута 1 или 0 раз влево, судя по записи. вопрос то не об этом. Просто так устанавливать бит в 1, не трогая соседние, получается, только когда этот бит (RXEN)== 0. A если он уже ==1, то тогда соседний бит (слева) установится в 1? (Ну например, в результате предыдущей операции , которая уже установила RXEN==1?) Добавлено через 3 минуты Добавлено через 7 минут Но в принципе, я догадался - просто если инициализируют USART, то в первый раз всё так и есть, по умолчанию он ==0, а 2й раз уже инициализировать не придётся, поэтому на возможность того, что он уже может быть раньше поставлен в 1, не обращают внимания. ТОгда действительно, писать имя бита удобнее , чем я раньше старался всегда писать в бинарном формате типа
0
|
||||||||
|
|
||
| 27.12.2017, 15:35 | ||
|
Боже, прочитай уже книжку по Си, наконец! Какой смысл тут что-то непрофессионально объяснять тебе третью страницу подряд, если всё уже давно объяснили гораздо более умные люди в книгах?!?!
0
|
||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
||
| 27.12.2017, 16:10 | ||
|
Сам регистр USART в этом действии не участвует, оно проводится ещё до того, как компилятор запишет машинный код скомпилированной программы. Как раз для получения того самого числа 00011000 . Которое на других моделях микроконтроллеров может быть например 01100000 или каким-то ещё. Но если написано (1<<RXEN)|(1<<TXEN), то вычислением данного числа займётся компилятор согласно уже выставленным разработчиками библиотеки к данному микроконтроллеру значениям RXEN и TXEN.
1
|
||
|
0 / 0 / 0
Регистрация: 30.06.2015
Сообщений: 209
|
|||
| 27.12.2017, 17:13 | |||
|
Скинь пожалуйста ссылку, где написано это? (я прочитав про битовые сдвиги, раньше думал, что (1<<RXEN) обозначает сдвинуть 1 из 4 разряда влево 0 раз, т.е. 4 разряд установится в 1). А если бы он был ==1, то 1 раз, и тогда 5 бит установится в 1, а в с 4 по 0 биты допишутся нули?
0
|
|||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|||
| 27.12.2017, 17:38 | |||
|
Именно поэтому для него удобно использовать 1цу, потому что над сдвигами нулей в прочих разрядах можно не задумываться, а думать только над перемещениями этой самой единицы по разрядам. Добавлено через 6 минут
1
|
|||
|
0 / 0 / 0
Регистрация: 30.06.2015
Сообщений: 209
|
|
| 27.12.2017, 19:16 | |
|
0
|
|
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|
| 27.12.2017, 19:46 | |
|
Касательно значений в RXEN и TXEN ?
Если судить по http://forum.cxem.net/index.ph... регистрах/ то в файле "mega16_bits.h" или аналогичном, сгенерированном студией для вашего микроконтроллера при создании проекта. Если качательно вычислений выражений из констант, то http://citforum.ru/programming... _043.shtml или https://it.wikireading.ru/35113 Добавлено через 9 минут И ещё здесь можете посмотреть http://mycpp.ru/cpp/book/c04.html, в особенности раздел "побитовые операторы"
1
|
|
|
0 / 0 / 0
Регистрация: 30.06.2015
Сообщений: 209
|
|||
| 28.12.2017, 11:49 | |||
|
Так-то я читал примерно это
(Просто я раньше всё время думал, что это просто отдельно адресуемые биты, (как в ассемблере в некоторых регистрах есть отдельно адресуемые биты). Т.е. я думал, что можно присвоить этим битам отдельно значения, не трогая весь остальной регистр. )
0
|
|||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|||||||||||||
| 28.12.2017, 12:28 | |||||||||||||
|
Добавлено через 3 минуты Никакой теории в этом нет - просто разработчики кристалла микроконтроллера запроектировали, что 4 бит такого-то регистра отвечает за открытие/закрытие получения данных по UART. Добавлено через 4 минуты
1
|
|||||||||||||
|
0 / 0 / 0
Регистрация: 30.06.2015
Сообщений: 209
|
||||||||||||||
| 28.12.2017, 13:21 | ||||||||||||||
|
Но просто не пойму, как это, сдвигая 1 можно не трогать остальные биты в регистре? Когда он пустой, это понятно
0
|
||||||||||||||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
||||||||||||||||||||||
| 28.12.2017, 14:06 | ||||||||||||||||||||||
Добавлено через 2 минуты Если объявить
Но у нас же
1
|
||||||||||||||||||||||
|
0 / 0 / 0
Регистрация: 30.06.2015
Сообщений: 209
|
|
| 28.12.2017, 19:42 | |
|
Теперь почти понятно. так ссылку киньте пожалуйста, где это всё описано?
0
|
|
|
|
|
| 28.12.2017, 22:38 | |
|
design_m, Сложнее кинуть ссылку, где это не описано
Литература C++ Любая книга по Си. Вообще любая. Я даже удивлён, если ты читал какие-то книги, как можно что-то настолько невнимательно читать?
0
|
|
| 28.12.2017, 22:38 | |
|
Программа на побитовые сдвиги
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
SUNO Ai - Река Без Дна
zorxor 31.07.2026
Автор стихотворения - астрофизик Марина Катыс
Ссылка на сгенерированную музыкальную композицию:
https:/ / suno. com/ song/ 6f6e5464-b290-4650-be6c-44c85f8d8013
Я говорю, что Время- как вода
течет. . .
|
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла:
Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
|
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет
Новости компьютерного мира и их обсуждение (4)
Салют, шампанское, овации!
:drink:
|
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр.
Дословно, отклонённая. . .
|
|
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы
Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
|
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
|
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2.
Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
|
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
|