C 언어
C 프로그램에 다음과 같이 상태라는 구조로 그룹화된 여러 TRUE/FALSE 변수가 포함되어 있다고 가정합니다. -
struct { unsigned int widthValidated; unsigned int heightValidated; } status;
이 구조에는 8바이트의 메모리 공간이 필요하지만 실제로는 각 변수에 0 또는 1을 저장할 것입니다. C 프로그래밍 언어는 이러한 상황에서 메모리 공간을 활용하는 더 나은 방법을 제공합니다.
구조 내에서 이러한 변수를 사용하는 경우 해당 바이트 수만 사용할 것임을 C 컴파일러에 알리는 변수의 너비를 정의할 수 있습니다. 예를 들어 위의 구조는 다음과 같이 다시 작성할 수 있습니다. -
struct { unsigned int widthValidated : 1; unsigned int heightValidated : 1; } status;
위의 구조는 상태 변수에 대해 4바이트의 메모리 공간이 필요하지만 값을 저장하는 데 2비트만 사용됩니다.
각각 너비가 1비트인 최대 32개의 변수를 사용하는 경우 상태 구조도 4바이트를 사용합니다. 그러나 33개의 변수가 있는 즉시 메모리의 다음 슬롯을 할당하고 8바이트를 사용하기 시작합니다. 개념을 이해하기 위해 다음 예를 확인합시다 -
라이브 데모#include <stdio.h> #include <string.h> /* define simple structure */ struct { unsigned int widthValidated; unsigned int heightValidated; } status1; /* define a structure with bit fields */ struct { unsigned int widthValidated : 1; unsigned int heightValidated : 1; } status2; int main( ) { printf( "Memory size occupied by status1 : %d\n", sizeof(status1)); printf( "Memory size occupied by status2 : %d\n", sizeof(status2)); return 0; }
위의 코드를 컴파일하고 실행하면 다음과 같은 결과가 생성됩니다. -
Memory size occupied by status1 : 8 Memory size occupied by status2 : 4
비트 필드의 선언은 구조체 내에서 다음과 같은 형식을 갖습니다 -
struct { type [member_name] : width ; };
다음 표는 비트 필드의 변수 요소를 설명합니다 -
Sr.No. | 요소 및 설명 |
---|---|
1 | 유형 비트 필드 값이 해석되는 방식을 결정하는 정수 유형입니다. 유형은 int, signed int 또는 unsigned int일 수 있습니다. |
2 | 구성원 이름 비트 필드의 이름입니다. |
3 | 너비 비트 필드의 비트 수입니다. 너비는 지정된 유형의 비트 너비보다 작거나 같아야 합니다. |
사전 정의된 너비로 정의된 변수를 비트 필드라고 합니다. . 비트 필드는 단일 비트 이상을 보유할 수 있습니다. 예를 들어, 0에서 7 사이의 값을 저장하기 위해 변수가 필요한 경우 다음과 같이 너비가 3비트인 비트 필드를 정의할 수 있습니다. -
struct { unsigned int age : 3; } Age;
위의 구조 정의는 age 변수가 값을 저장하는 데 3비트만 사용할 것임을 C 컴파일러에 지시합니다. 3비트 이상을 사용하려고 하면 그렇게 할 수 없습니다. 다음 예를 시도해 보겠습니다 -
라이브 데모#include <stdio.h> #include <string.h> struct { unsigned int age : 3; } Age; int main( ) { Age.age = 4; printf( "Sizeof( Age ) : %d\n", sizeof(Age) ); printf( "Age.age : %d\n", Age.age ); Age.age = 7; printf( "Age.age : %d\n", Age.age ); Age.age = 8; printf( "Age.age : %d\n", Age.age ); return 0; }
위의 코드가 컴파일되면 경고와 함께 컴파일되고 실행되면 다음 결과가 생성됩니다. -
Sizeof( Age ) : 4 Age.age : 4 Age.age : 7 Age.age : 0
C 언어
구성품 및 소모품 WINGONEER Arduino용 새로운 스타일의 적외선 IR 무선 원격 제어 센서 모듈 키트 × 1 SainSmart L298N 듀얼 H 브리지 스테퍼 모터 드라이버 × 1 4WD 로봇 자동차 섀시 키트 × 1 Arduino UNO × 1 필요한 도구 및 기계 납땜 인두(일반) 이 프로젝트 정보 Instructables에서 원래 디자인을 찾아 버전을 만들었습니다. 원래는 트랙 차량이었고 이것
제조는 우리의 세계가 중요하게 생각하는 것입니다. 2018년 기준으로 제조업은 세계 GDP의 거의 16%를 차지했습니다. 불행히도 제조 산업은 SARS-CoV-2에 의해 유발된 바이러스에 주어진 이름인 COVID-19의 대유행 동안 타격을 입었습니다. 많은 제조 공장이 문을 닫아야 했고 다시 문을 열기 시작했습니다. 일부는 감소된 제조 근로자와 직원 또는 공급망의 심각한 혼란으로 인해 어려움을 겪었습니다. 다른 사람들은 제품에 대한 수요 증가에 직면해 있습니다. COVID-19로 인해 제조 회사가 직면한 문제가 무엇이든, 이를