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
'programing' 카테고리의 다른 글
오류 1064:SQL 구문에 오류가 있습니다. MariaDB 서버 버전에 해당하는 설명서에서 다음에 사용할 올바른 구문을 확인하십시오. (0) | 2023.10.29 |
---|---|
PHP에서 PDO를 통해 MySQL 쿼리를 루프하려면 어떻게 해야 합니까? (0) | 2023.10.29 |
우커머스에서 날짜별로 사용자 주문을 받는 방법은? (0) | 2023.10.29 |
MySQL: 둘 이상 발생한 행 선택 (0) | 2023.10.29 |
WordPress: meta_query가 있는 게시물 제외 - 모든 게시물에 meta_field가 있는 것은 아닙니다. (0) | 2023.10.29 |