|
0 / 0 / 0
Регистрация: 13.12.2014
Сообщений: 4
|
|
Как работают побитовые сдвиги?13.04.2007, 19:36. Показов 88452. Ответов 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 | |
|
Программа на побитовые сдвиги
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
интеграция AnyLogic с самописным REST API и переход на Odoo
anaschu 03.07.2026
Успешная интеграция AnyLogic с самописным REST API и переход на промышленную Odoo WMS
Сегодня проделал огромный путь от простой симуляции физических процессов до построения полноценной. . .
|
Поиск всех путей на ориентированном графе. Linux
dcc0 02.07.2026
Переработка старого кода из моей статьи.
Через несколько переработок от PHP кода к C89 (надеюсь, 89).
Но довольно запутанно получилось. Код для Linux.
Но если убрать time и то, что с ним. . .
|
Сам себя обучал rest api
anaschu 02.07.2026
Педагогический лайфхак: Почему чистый REST API для ученика намного круче, чем готовые библиотеки
Когда мы отказались от капризного JAR-файла AnyLogic и переписали код на стандартный HttpClient,. . .
|
rest api anylogic - выполнение модели на своём русском сайте
anaschu 02.07.2026
Как подружиться с AnyLogic Cloud API, победить провайдеров и развернуться Java-бэкенд в Docker на бесплатном хостинге: Двухдневный лог борьбы
Всем привет! Хочу поделиться свежим (и довольно. . .
|
|
Где деньги лежат
kumehtar 02.07.2026
Это - японская подводная лодка I-52 (тип C2, кодовое имя Momi) вышла из Японии в марте 1944 года с миссией в оккупированную немцами Францию (Лорьян). Это была одна из «Янаги»-миссий по обмену. . .
|
Krabik для WoW 3.3.5a, многоязычный
AmbA 02.07.2026
Допилил бота, думаю что окончательно. Изменения:
- добавлена многоязычность
- добавлено снятие скриншотов
- добавлено поддержание бафов хождения по воде (для жреца, дк и шамана)
- и так, по. . .
|
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу)))
Критические ошибки, мешающие компиляции и. . .
|
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата)
Этот документ предназначен для того, чтобы новый чат Claude мог продолжить
работу без необходимости заново разбираться в. . .
|