Использование: оператор в C [дубликат]

28
задан ROMANIA_engineer 4 September 2019 в 07:12
поделиться

3 ответа

Это битовые поля, например, unsigned int addr: 9; создает поле addr длиной 9 бит.

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

Объединение позволяет вам загрузить одно 32-битное значение, а затем получить доступ к отдельным полям с помощью кода вроде (исправлены мелкие проблемы, в частности, объявления кода и теста ]):

#include <stdio.h>

struct microFields {
    unsigned int addr:9;
    unsigned int cond:2;
    unsigned int wr:1;
    unsigned int rd:1;
    unsigned int mar:1;
    unsigned int alu:3;
    unsigned int b:5;
    unsigned int a:5;
    unsigned int c:5;
};

union micro {
    unsigned int microCode;
    struct microFields code;
};

int main (void) {
    int myAlu;
    union micro test;
    test.microCode = 0x0001c000;
    myAlu = test.code.alu;
    printf("%d\n",myAlu);
    return 0;
}

Это распечатает 7, которые представляют собой три бита, составляющие битовое поле alu .

51
ответ дан 28 November 2019 в 02:58
поделиться

Это битовое поле . Число после двоеточия показывает, сколько бит занимает каждая переменная.

8
ответ дан 28 November 2019 в 02:58
поделиться

Это декларатор, который указывает количество бит для переменной.

Для получения дополнительной информации см .:

http://msdn.microsoft.com/en-us/library/yszfawxh (VS.80) .aspx

1
ответ дан 28 November 2019 в 02:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: