Pilatus 0 29 января, 2017 Опубликовано 29 января, 2017 · Жалоба Согласно этому документу http://www.keil.com/support/man/docs/uv4/u...p_constants.htm чтобы представить число в двоичном виде нужно поставить в конце Y или y/ Но на вот это uint64_t _bit_FM_LCD_PACKET=11111111y; компилятор ругается, требует поставить точку с запятой перед "y" Что не так? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Палыч 10 29 января, 2017 Опубликовано 29 января, 2017 · Жалоба Что не так? Документ относится к отладчику, а не к компилятору. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pilatus 0 29 января, 2017 Опубликовано 29 января, 2017 · Жалоба ну а как тогда? 11111111b тоже не получается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Den64 0 29 января, 2017 Опубликовано 29 января, 2017 · Жалоба 0b11111111 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Pilatus 0 29 января, 2017 Опубликовано 29 января, 2017 · Жалоба 0b11111111 Тоже ругается Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Lagman 1 29 января, 2017 Опубликовано 29 января, 2017 · Жалоба Хм, если сам кейл для i51 предлагает такую конструкцию http://www.keil.com/support/docs/1156.htm то наверно и для других процессоров нет возможности задать число в двоичном представлении. P.S. Помню как перешел на язык С а там нет двоичного представления, пришлось переходить на шестнадцатеричные. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 29 января, 2017 Опубликовано 29 января, 2017 · Жалоба никак. нету этого в Кейле. народ просто дефайны пишет, тоже вариант хороший. #define LongToBin(n) \ (\ ((n >> 21) & 0x80) | \ ((n >> 18) & 0x40) | \ ((n >> 15) & 0x20) | \ ((n >> 12) & 0x10) | \ ((n >> 9) & 0x08) | \ ((n >> 6) & 0x04) | \ ((n >> 3) & 0x02) | \ ((n ) & 0x01) \ ) #define Bin(n) LongToBin(0x##n##l) Я бы еще #error или хоть #warning вставил в этот дефайн, потому что нужно еще корректную разрядность на выходе получить. А еще правильней сделать не просто один Bin(), а индивидуальные "Bin_u8()", "Bin_u16()" etc. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Den64 0 29 января, 2017 Опубликовано 29 января, 2017 · Жалоба char a = (1 << 7) | (1 << 6) | (1 << 5) | (1 << 4) | (1 << 3) | (1 << 2) | (1 << 1) | (1 << 0); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Ruslan1 17 29 января, 2017 Опубликовано 29 января, 2017 · Жалоба P.S. Помню как перешел на язык С а там нет двоичного представления, пришлось переходить на шестнадцатеричные. :) Оно не входит в стандарт (стандарт- hex, dec, oct), но абсолютное большинство компиляторов умеет и бин. А вот кейл- не умеет, даже странно как-то. Когда перешел на Кейл- был сильно удивлен этому факту, сильно плевался когда свои исходники из других МК и компиляторов под него адаптировал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Палыч 10 29 января, 2017 Опубликовано 29 января, 2017 · Жалоба ну а как тогда? Обсуждалось когда-то тут Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться