|
Поменять местами биты в байте. |
|
|
|
 |
Ответов
|
May 9 2007, 10:22
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(ps1x @ May 9 2007, 12:43)  Допустим есть 0bXY000000. Как сделать 0bYX000000? xxx = ((xxx>>1)|(xxx<<1))&0xC0; Цитата И еще, есть ли в CVAVR функция, возвращающая № буквы, т.е. типа chr("a")=35 ? Обалдеть  1. "a" - это стринг, а 'буква' это 'a' 2. 'a' это и есть 'номер буквы'
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
May 9 2007, 12:23
|
Профессионал
    
Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775

|
Цитата(zltigo @ May 9 2007, 13:22)  xxx = ((xxx>>1)|(xxx<<1))&0xC0; Обалдеть  1. "a" - это стринг, а 'буква' это 'a' 2. 'a' это и есть 'номер буквы' Как мне видится надо сделать так: xxx = 0b XY00 0000; // условие xxx = (xxx&0x33f) | ( ( (xxx&0x80)>>1) | ( (xxx&0x40)<<1) ); тогда остальные биты остануться в живых
|
|
|
|
|
May 9 2007, 13:24
|
Местный
  
Группа: Свой
Сообщений: 300
Регистрация: 15-03-06
Из: Москва
Пользователь №: 15 284

|
Цитата(Serg76 @ May 9 2007, 15:23)  Как мне видится надо сделать так:
xxx = 0b XY00 0000; // условие xxx = (xxx&0x33f) | ( ( (xxx&0x80)>>1) | ( (xxx&0x40)<<1) );
тогда остальные биты остануться в живых Я это сделал так: xxx = (((xxx>>1)|(xxx<<1))&xxx&0xBF)^0b01000000;
|
|
|
|
|
May 9 2007, 14:44
|
Профессионал
    
Группа: Участник
Сообщений: 1 050
Регистрация: 4-04-07
Пользователь №: 26 775

|
Цитата(ps1x @ May 9 2007, 16:24)  Я это сделал так: xxx = (((xxx>>1)|(xxx<<1))&xxx&0xBF)^0b01000000; Прошу прощения, но по-моему сильно мудрЕно и, как мне кажется, неверно. Смотрите: при взаимных сдвижках - (xxx>>1)|(xxx<<1) без предварительного выделения нужных бит X и Y с помощью маскирования (xxx&0x80), (xxx&0x40) и последующего сложения ИЛИ непременно возникнет ошибка (Y | b = ????????). Попробуем проследить ход операций: 1. Сдвижка xxx на бит вправо даст 00 bXY0 0000; 2. Сдвижка xxx на бит влево даст bX Y000 0000; 3. После ИЛИ непонятно вообще что получится. А далее я что-то тоже не понял: ...&xxx&0xBF)^0b01000000; Если бы мы имели дело с регистром вида 00XY000000, то проканал бы и вариант zltigo, а так у нас имеется еще бит 'b', который как я понимаю может принимать любое значение. Поэтому мой вариант является универсальным, даже если на всех остальных позициях, кроме XY, будут биты с различными значениями.
|
|
|
|
|
May 10 2007, 20:36
|

Шаман
     
Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221

|
Цитата(Serg76 @ May 9 2007, 17:44)  Прошу прощения, но по-моему сильно мудрЕно и, как мне кажется, неверно. Смотрите:
при взаимных сдвижках - (xxx>>1)|(xxx<<1) без предварительного выделения нужных бит X и Y с помощью маскирования (xxx&0x80), (xxx&0x40) и последующего сложения ИЛИ непременно возникнет ошибка (Y | b = ????????). Попробуем проследить ход операций: 1. Сдвижка xxx на бит вправо даст 00 bXY0 0000; 2. Сдвижка xxx на бит влево даст bX Y000 0000; 3. После ИЛИ непонятно вообще что получится.
А далее я что-то тоже не понял: ...&xxx&0xBF)^0b01000000;
Если бы мы имели дело с регистром вида 00XY000000, то проканал бы и вариант zltigo, а так у нас имеется еще бит 'b', который как я понимаю может принимать любое значение. Поэтому мой вариант является универсальным, даже если на всех остальных позициях, кроме XY, будут биты с различными значениями. Комментарий в стиле клетчатого. Что ни предложение, то шедевр! Я плакалъ.
|
|
|
|
Сообщений в этой теме
ps1x Поменять местами биты в байте. May 9 2007, 09:43 ps1x Цитата(zltigo @ May 9 2007, 13:22) xxx = ... May 9 2007, 10:36  zltigo Цитата(ps1x @ May 9 2007, 13:36) да нет, ... May 9 2007, 10:46  haker_fox Цитата(ps1x @ May 9 2007, 18:36) да нет, ... May 9 2007, 11:47   ps1x Цитата(haker_fox @ May 9 2007, 14:47) А к... May 9 2007, 12:16    haker_fox Цитата(ps1x @ May 9 2007, 21:16) У меня е... May 11 2007, 02:41    zltigo Цитата(Serg76 @ May 9 2007, 17:44) ....то... May 9 2007, 15:16    Edmundo Цитата(Serg76 @ May 9 2007, 18:44) 1. Сдв... May 9 2007, 15:30 Laksus Цитата(Serg76 @ May 9 2007, 14:23) Как мн... May 9 2007, 15:00 xemul Тупое решение в лоб
Кодt = x;
x &= 0x3f;
if... May 9 2007, 15:27 Visor Есть такой флаг "Т", вот через него можн... May 10 2007, 13:07 kv_addr Цитата(Visor @ May 10 2007, 16:07) Есть т... May 11 2007, 00:34  singlskv Цитата(kv_addr @ May 11 2007, 04:34) На а... May 11 2007, 15:27   kv_addr Цитата(singlskv @ May 11 2007, 18:27) Дли... May 11 2007, 15:50    singlskv Цитата(kv_addr @ May 11 2007, 19:50) Пыта... May 11 2007, 16:39     kv_addr Цитата(singlskv @ May 11 2007, 19:39) Дык... May 11 2007, 20:13      singlskv Цитата(kv_addr @ May 12 2007, 00:13) IAR-... May 11 2007, 21:05       kv_addr Цитата(singlskv @ May 11 2007, 23:20) А у... May 11 2007, 21:07        singlskv Цитата(kv_addr @ May 12 2007, 01:07) Пров... May 11 2007, 21:22         kv_addr Цитата(singlskv @ May 12 2007, 00:22) А в... May 11 2007, 22:35         Александр Куличок Цитата(singlskv @ May 12 2007, 00:22) А в... May 12 2007, 15:33          singlskv Цитата(Александр Куличок @ May 12 2007, 19... May 12 2007, 21:12 Punk Цитата(ps1x @ May 9 2007, 12:43) Допустим... May 10 2007, 14:06 Dog Pawlowa Два порта контроллера закольцевать еще не предлага... May 10 2007, 14:20 ae_ Цитата(ps1x @ May 9 2007, 18:43) Допустим... May 11 2007, 02:04 kv_addr Цитата(ae_ @ May 11 2007, 05:04) асм, три... May 11 2007, 14:47 defunct ЦитатаВедь и переносимость программ, написанных на... May 12 2007, 00:15 kv_addr Цитата(defunct @ May 12 2007, 03:15) Позв... May 12 2007, 02:01  defunct Цитата(kv_addr @ May 12 2007, 04:01) Но 1... May 12 2007, 02:42   kv_addr Цитата(defunct @ May 12 2007, 05:42) Прот... May 12 2007, 04:01    defunct Цитата(kv_addr @ May 12 2007, 06:01) IMHO... May 12 2007, 12:16 singlskv Видимо самый быстрый вариант на С будет таким:
Код... May 12 2007, 12:05 sensor_ua Цитатапрограммная реализация encoder'a/decoder... May 12 2007, 15:09 kv_addr Цитата(sensor_ua @ May 12 2007, 18:09) Ду... May 12 2007, 23:08 Александр Куличок ЦитатаВсе правильно, в варианте с битом 7, компиля... May 13 2007, 07:05
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|