Российский производитель и разработчик сертифицированного измерительного оборудования с 1987 года


Подскажите, что это значит... &0xFFF) | (1<

Вы не вошли.

 Поиск | Регистрация | Вход 

killich
15.06.2006 21:25:21
#1

Гость

Подскажите, что это значит... &0xFFF) | (1<

Я никогда раньше не встречал такого синтаксиса, подскажите, как это прочитать и что делает этот код:

data1[i] = ((USHORT)(1024.0*sin((2.0*3.1415*i/1024.0)))&0xFFF) | (1<<12);

эта строчка что делает? каково ее назначение и суть? и как работает оператор << в данном случае?
&0xFFF) | (1<<12);

Андрей
16.06.2006 09:28:59
#2

Гость

Re: Подскажите, что это значит... &amp;0xFFF) | (1&lt;

Эту строчку можно переписать так:
1) a = (USHORT)(1024.0*sin((2.0*3.1415*i/1024.0));
2) b = a & 0xFFF;
3) c = b | (1<<12);

с выражение 1, все должно быть понятно.
в выражени 2 произодится операция побитовго логического "И". Умножение на маску, что приводит к обнулению старших битов.
в выражении 3 происходит установка 13 бита в 1.
выражение (1<<12) как раз и является числом 0x1000

Читайте книги по программированию, двоичной арифметике и двоичном/шестнадцатеричном исчислении.

killich
16.06.2006 10:54:50
#3

Гость

Re: Подскажите, что это значит... &amp;0xFFF) | (1&lt;

Андрей, благодарю за полезные советы. К счастью, довелось уже прочитать не мало, но и еще многое не прочитано. :0) Я студент, и реальное программирование для меня началось лишь неделю назад. Сделайте скидку на отсутствие опыта.

А теперь вопрос по существу, а зачем обнулять 13 бит. Что это дает. Мммм... может вопрос и покажется вам глупым, но я пока только собираю информацию по ЦАП и работе с ним (2 дня только за реальной L780c). Вчера разобрался с АЦП, сегодня буду с ЦАП. Очень жду.

Андрей
16.06.2006 11:39:48
#4

Гость

Re: Подскажите, что это значит... &amp;0xFFF) | (1&lt;

" ...а зачем обнулять 13 бит."
вопрос на 100 баксов
Во-первыйх он не обнуляется, а устанавливается в 1.
Во-вторых я не знаю зачем это делается.
Без всего текста программы и описания L780 этого понять в принципе не возможно.


Так что читайте документацию и задавайте осмысленные вопросы. Ваш последний вопрос из разряда глупых (вы уж извините). Первый был нормальным, нельзя все сразу знать.

killich
16.06.2006 12:38:00
#5

Гость

Re: Подскажите, что это значит... &amp;0xFFF) | (1&lt;

Ну да ладно вам, просто опечатка случилась. На 1 устанавливается, да, так и писали, просто я поторотился, когда писал.
Ну так что? Вы и правда не знаете? Почему он устанавливается на 1?  Может кто то знает?

Да я сразу знал, что это какие то двоичные преобразования, но смысл то их в чем?

Нет, конечно можно и так использовать, но просто мне очень любопытно, какова причина этих действий.

DKorolkov
16.06.2006 14:42:59
#6

Гость

Re: Подскажите, что это значит... &amp;0xFFF) | (1&lt;

> Почему он устанавливается на 1?

(LCARD_CDROM)/PCI/L7XX/DOC/l7xxapi.doc :

Таблица 3. Формат слова данных ЦАП
Бит    Назначение

0-11    12ти битный код ЦАП

12    Выбор номера канала ЦАП: ‘0’ - первый канал; ‘1’ - второй канал.

13-15    Не используются