programing

C에서 : 연산자의 사용

codeshow 2023. 10. 29. 20:01
반응형

C에서 : 연산자의 사용

가능한 중복:
struct 필드 뒤의 ': number'는 무엇을 의미합니까?
'unsigned temp:3'은 무엇을 의미합니까?

이런 종류의 질문은 정말 싫지만, 정말 귀찮아서, 다음과 같이 물어보겠습니다.

아래 코드에서 : 연산자의 기능은 무엇입니까?

#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;
  microFields code;
};

int main(int argc, char* argv[])
{
  micro test;
  return 0;
} 

만약 누군가가 조금이라도 신경을 쓴다면, 나는 아래 링크에서 이 코드를 꺼냈습니다: http://www.cplusplus.com/forum/beginner/15843/ . http://www.cplusplus.com/forum/beginner/15843/

어디선가 본 적이 있다는 것을 알고 있고, 다시 볼 때도 이해하고 싶기 때문에 정말 알고 싶습니다.

그것들은 비트 필드이고, 예를 들어 다음과 같습니다.unsigned int addr:9;를 만듭니다.addr필드 길이가 9비트입니다.

많은 값을 적분형으로 포장하는 데 일반적으로 사용됩니다.특정한 경우 가상 CPU(가능한 경우)에 대한 32비트 마이크로코드 명령 구조를 정의합니다(모든 비트 필드 길이를 더하면 총 32개가 됩니다).

유니언은 당신이 단일 32비트 값으로 로드한 다음 코드와 같은 개별 필드에 접근할 수 있게 해줍니다. (작은 문제들도 고쳤습니다. 특히 다음의 선언들)code그리고.test):

#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을 출력하는데, 이것은 3개의 비트들을 구성하는 것입니다.alu비트 필드의

약간 들판인데요.콜론 뒤의 숫자는 각 변수가 차지하는 비트 수입니다.

그것은 변수에 대한 비트 수를 지정하는 선언기입니다.

자세한 내용은 다음을 참조하십시오.

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

언급URL : https://stackoverflow.com/questions/3305933/use-of-the-operator-in-c

반응형