6

私は HCS12 MCU を使用していますが、これはライブラリの一部でした。このコードで 1U、2U、4U、8U... が何を意味しているのか気になります。私はまだクラスの使い方を学んでいます。素人の言葉で物事を説明してみてください。

私の推測: これは、どのビットが高く設定されているということですか? 1U = 00000001 2U = 00000010 ...

これは何と呼ばれるでしょうか?

ありがとう

    typedef union {
  byte Byte;
  struct {
    byte             :1; 
    byte ADR1        :1;                                       /* Slave Address Bit 1 */
    byte ADR2        :1;                                       /* Slave Address Bit 2 */
    byte ADR3        :1;                                       /* Slave Address Bit 3 */
    byte ADR4        :1;                                       /* Slave Address Bit 4 */
    byte ADR5        :1;                                       /* Slave Address Bit 5 */
    byte ADR6        :1;                                       /* Slave Address Bit 6 */
    byte ADR7        :1;                                       /* Slave Address Bit 7 */
  } Bits;
  struct {
    byte         :1;
    byte grpADR_1 :7;
  } MergedBits;
} IBADSTR;
extern volatile IBADSTR _IBAD @(REG_BASE + 0x000000E0UL);
#define IBAD                            _IBAD.Byte
#define IBAD_ADR1                       _IBAD.Bits.ADR1
#define IBAD_ADR2                       _IBAD.Bits.ADR2
#define IBAD_ADR3                       _IBAD.Bits.ADR3
#define IBAD_ADR4                       _IBAD.Bits.ADR4
#define IBAD_ADR5                       _IBAD.Bits.ADR5
#define IBAD_ADR6                       _IBAD.Bits.ADR6
#define IBAD_ADR7                       _IBAD.Bits.ADR7
#define IBAD_ADR_1                      _IBAD.MergedBits.grpADR_1
#define IBAD_ADR                        IBAD_ADR_1

#define IBAD_ADR1_MASK                  2U
#define IBAD_ADR2_MASK                  4U
#define IBAD_ADR3_MASK                  8U
#define IBAD_ADR4_MASK                  16U
#define IBAD_ADR5_MASK                  32U
#define IBAD_ADR6_MASK                  64U
#define IBAD_ADR7_MASK                  128U
#define IBAD_ADR_1_MASK                 254U
#define IBAD_ADR_1_BITNUM               1U
4

3 に答える 3

10

符号なし整数リテラルを定義します。unsigned long integerを使用して、16 進リテラルを と定義した場所も確認できます0x...UL

それらが生成するビット パターンを知りたい場合は、10 進数リテラルを同等の 16 進数または 2 進数リテラルに変換するだけです。16 進数では1、2進数ではそれぞれ 1 に1Uなります。0x01U01b

より一般的に見られる別のリテラルは、f-suffix を使用します。これは、 のような単精度浮動小数点リテラルです1.0f

1. 説明のみを目的としており、標準の実際のリテラルではありません

于 2013-02-12T23:57:51.553 に答える
3

それらは単なる整数定数です。接尾辞は、Uそれらをintではなくunsignedintにします。

これは、C11標準の最終ドラフトのセクション6.4.4.1で説明されています。

于 2013-02-12T23:58:53.770 に答える