Jump to content
    

запись двоичного числа в языке СИ

HEX (16-ричный) формат записи числа 255 (DEC) делается так:

0xFF

 

а как записать его в двоичном, чтобы понял компилятор СИ?

 

на PIC-ах было так:

0b11111111

 

сейчас пишу под ARM-7 , компилятор IAR

он такой записи не понимает

помогите

Share this post


Link to post
Share on other sites

HEX (16-ричный) формат записи числа 255 (DEC) делается так:

0xFF

 

а как записать его в двоичном, чтобы понял компилятор СИ?

 

на PIC-ах было так:

0b11111111

 

сейчас пишу под ARM-7 , компилятор IAR

он такой записи не понимает

помогите

 

В стандарте С не предусмотрен двоичный формат записи

Share this post


Link to post
Share on other sites

Есть, но лучше все-таки ими не пользоваться...

 

    /*  -------------------------------------------------------------------------
     *  Binary constant macros by Tom Torfs (tomtorfs@village.uunet.be)
     *  Sample usage:
     *  B8(01010101) = 85
     *  B16(10101010,01010101) = 43605
     *  B32(10000000,11111111,10101010,01010101) = 2164238933
     */

#define HEX__(n) 0x##n##LU

#define B8__(x) ((x & 0x0000000FLU) ?   1 : 0)\
               +((x & 0x000000F0LU) ?   2 : 0)\
               +((x & 0x00000F00LU) ?   4 : 0)\
               +((x & 0x0000F000LU) ?   8 : 0)\
               +((x & 0x000F0000LU) ?  16 : 0)\
               +((x & 0x00F00000LU) ?  32 : 0)\
               +((x & 0x0F000000LU) ?  64 : 0)\
               +((x & 0xF0000000LU) ? 128 : 0)

#define B8(d)                   ((unsigned char)B8__(HEX__(d)))
#define B16(dmsb,dlsb)          (((unsigned short)B8(dmsb) <<  8) + B8(dlsb))
#define B32(dmsb,db2,db3,dlsb)  (((unsigned long)B8(dmsb)  << 24) \
                               + ((unsigned long)B8(db2)   << 16) \
                               + ((unsigned long)B8(db3)   <<  8) \
                               + B8(dlsb))

 

только типы своего компилера проверьте

Share this post


Link to post
Share on other sites

На самом деле использование бинарных изображений чисел не очень удобно. Гораздо удобнее Hex изображения.

Смотря для каких целей вы хотите его использовать.

Почитайте руководство на IAR СИ компилятор там есть механизмы

для работы с битами.

Share this post


Link to post
Share on other sites

На самом деле использование бинарных изображений чисел не очень удобно. Гораздо удобнее Hex изображения.
На самом деле двоичная запись удобна только в одном случае - при программировании знакогенератора. А в остальных случаях удобнее и нагляднее мнемоническая запись: http://electronix.ru/forum/index.php?showt...mp;#entry203047

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...