Перейти к содержанию
    

Двоичное представление константы

Кто знает как указать двоичную константу?

0b00000000 не проходит.

В описании что-то не нашел.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нету в 'C' двоичных констант. Можно задефайнить свои, но ума не приложу, зачем это может понадобиться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В языке Си нет двоичного представления величин. Используйте макросы, если это вам так необходимо. Погуглите "макросы Аскольда Волкова" или что-то подобное.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нету в 'C' двоичных констант. Можно задефайнить свои, но ума не приложу, зачем это может понадобиться.

 

Привык после работы в MPLAB на HITECH PICC. там можно было.

Иногда мне для наглядности просто удобнее битовые маски так задавать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подсмотрел когда-то здесь на сайте, и слегка изменил (а четверичный формат - добавил)

/* Макро для использования двоичного формата чисел */
#define _BITSET(bits) \
  ((uint16_t) (\
  (bits % 010) | \
  (bits / 010 % 010) << 1 | \
  (bits / 0100 % 010) << 2 | \
  (bits / 01000 % 010) << 3 | \
  (bits / 010000 % 010) << 4 | \
  (bits / 0100000 % 010) << 5 | \
  (bits / 01000000 % 010) << 6 | \
  (bits / 010000000 % 010) << 7 | \
  (bits / 0100000000 % 010) << 8 | \
  (bits / 01000000000 % 010) << 9 | \
  (bits / 010000000000 % 010) << 10 | \
  (bits / 0100000000000 % 010) << 11 | \
  (bits / 01000000000000 % 010) << 12 | \
  (bits / 010000000000000 % 010) << 13 | \
  (bits / 0100000000000000 % 010) << 14 | \
  (bits / 01000000000000000 % 010) << 15))
#define BIN(bits) _BITSET(0##bits)

/* Макро для использования четверичного формата чисел */
#define _PAIRSET(digits) \
  ((uint16_t) (\
  (digits % 010) | \
  (digits / 010 % 010) << 2 | \
  (digits / 0100 % 010) << 4 | \
  (digits / 01000 % 010) << 6 | \
  (digits / 010000 % 010) << 8 | \
  (digits / 0100000 % 010) << 10 | \
  (digits / 01000000 % 010) << 12 | \
  (digits / 010000000 % 010) << 14))
#define QUAD(digits) _PAIRSET(0##digits)

 

Мне это понадобилось, когда свой шрифт создавал - очень удобно "рисовать" буквы.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мне это понадобилось, когда свой шрифт создавал - очень удобно "рисовать" буквы.

Гораздо нагляднее рисовать не только буквы но и картинки так:

#define ________    0U
#define _______X    1U
#define ______X_    2U
#define ______XX    3U
#define _____X__    4U
#define _____X_X    5U
...
#define XXXXXXX_    254U
#define XXXXXXXX    255U

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гораздо нагляднее рисовать не только буквы но и картинки так...

Приму к сведению.

У меня тоже было неплохо (еще свой простенький вариант субпиксельного сглаживания сделал):

    // 0x30 0
    QUAD(01333000),
    QUAD(03001200),
    QUAD(12000300),
    QUAD(12000300),
    QUAD(12000300),
    QUAD(12000300),
    QUAD(03001200),
    QUAD(01333000),
    QUAD(00000000),
    QUAD(00000000),

дефайнами я столько вариантов не закодировал бы, места б в файле не хватило :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В языке Си нет двоичного представления величин. Используйте макросы, если это вам так необходимо. Погуглите "макросы Аскольда Волкова" или что-то подобное.

в KEil C впрочем есть Binary: Suffix Y or y Example: 11111111Y

Понадобиться вполне может, авторски подрихтовать "знакогенератор" стандартного LCD (вот прямщас рисую), например, куда как нагляднее чем в HEX. :smile3046:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в KEil C впрочем есть Binary: Suffix Y or y Example: 11111111Y

Не для программы на C, а для симулятора.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

о как, у меня собственно и не получилось тоже, провозился и плюнул, забив всё хексами..

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня тоже было неплохо (еще свой простенький вариант субпиксельного сглаживания сделал):

Вообще, субпиксельное сглаживание - это другое. А это просто сглаживание с применением оттенков серого. Для него рекомендую утилиту ttf2pcx. Она экспортирует системные шрифты в растровое изображение в формате PCX, при этом умеет делать и оттенки серого. В дальнейшем этот PCX-файл легко парсится. Собственно, что я и сделал. Результат - загляденье. Если интересна парсилка - выложу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вообще, субпиксельное сглаживание - это другое. А это просто сглаживание с применением оттенков серого. Для него рекомендую утилиту ttf2pcx. Она экспортирует системные шрифты в растровое изображение в формате PCX, при этом умеет делать и оттенки серого. В дальнейшем этот PCX-файл легко парсится. Собственно, что я и сделал. Результат - загляденье. Если интересна парсилка - выложу.

Нет, у меня сдвиг по RGB - субпискельный.

Примерно, как под цифрой 7 на рисунке по ссылке: http://ru.wikipedia.org/wiki/ClearType

Это уже в самой программе рисования символов делается. Только, немножко однобокий сдвиг получается, неполный набор, для простоты. Только rgb, rgB, RGb, RGB (маленькие буквы - выключен субпиксел, большие - включен). И - никакой коррекции яркости.

Выложите парсилку, отчего ж не посмотреть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет, у меня сдвиг по RGB - субпискельный.

Примерно, как под цифрой 7 на рисунке по ссылке: http://ru.wikipedia.org/wiki/ClearType

Пардонте, обознался :-)

 

Выложите парсилку, отчего ж не посмотреть.

Выкладываю. Там, правда, без комментариев, но всё равно не слишком безобразно. Формат шрифта: каждый пиксель для шрифта кодируется в 4 бита (т.е. 2 пикселя на байт), 8 оттенков серого, старший бит используется как флаг для RLE (сворачивание идентичных последовательных пикселей).

pcx2font3bpp.txt

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...