Старый 26.11.2009, 18:46   #1   
///
 
Аватар для -=Женек=-
 
Сообщений: 9,552
Регистрация: 02.04.2005
Возраст: 45

-=Женек=- вне форума Не в сети
Как наиолее рационально сдвинуть бит?

Господа, есть задачка.
Имеется HEX-число. Его старшие 4 бита значащие, младшие всегда равны нулю. Нужно 4-й бит переместить на позицию третьего. Ну и в итоге получить HEX-число.
Как наиболее рационально и с меньшим числом операций? Важно быстродействие.
  Ответить с цитированием
Старый 26.11.2009, 18:50   #2   
///
 
Аватар для -=Женек=-
 
Сообщений: 9,552
Регистрация: 02.04.2005
Возраст: 45

-=Женек=- вне форума Не в сети
В общем смысл в чем, есть программа для AVR-контроллера, использующая 4 старших бита одного из портов. 4-й бит выгорел, но есть свободная ножка третьего бита. Хочу ее использовать.
  Ответить с цитированием
Старый 26.11.2009, 19:44   #3   
Out There
 
Аватар для Part!zan
 
Сообщений: 5,910
Регистрация: 13.12.2004
Возраст: 47

Part!zan вне форума Не в сети
с системой команд avr не знаком, а на сях будет как-то так: ((a>>3)<<2)|(a&3), где а - старший полубайт
  Ответить с цитированием
Старый 26.11.2009, 20:05   #4   
///
 
Аватар для -=Женек=-
 
Сообщений: 9,552
Регистрация: 02.04.2005
Возраст: 45

-=Женек=- вне форума Не в сети
Вообще-то я оперирую с целым байтом.
Пришел к такому решению:
a |= (a & 0x10) >> 1.

Последний раз редактировалось -=Женек=-; 26.11.2009 в 20:41.
  Ответить с цитированием
Старый 26.11.2009, 21:30   #5   
Out There
 
Аватар для Part!zan
 
Сообщений: 5,910
Регистрация: 13.12.2004
Возраст: 47

Part!zan вне форума Не в сети
-=Женек=-, я как-то привык биты с 1 нумеровать...
  Ответить с цитированием
Старый 26.11.2009, 22:09   #6   
///
 
Аватар для -=Женек=-
 
Сообщений: 9,552
Регистрация: 02.04.2005
Возраст: 45

-=Женек=- вне форума Не в сети
Ну в классическом с может быть и нет привязки к номеру бита, типа variable[bit_number], а вот в AVR идет четкое обращение к ножке - PORTC.0
  Ответить с цитированием
Поиск в теме: 


Опции темы

Быстрый переход:

  Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Support by DrIQ & Netwind