본문 바로가기
프로그래밍 언어/C++

[C/C++] 패딩 비트 (Padding Bit)

by 까망 하르방 2024. 11. 9.
반응형

패딩비트 (Padding Bit)

패딩비트란 사용하지 않는 비트 의미한다.

구조체에서 가장 큰 자료형 크기를 따라간다.

typedef struct
{
    int power; // 4 B
    int level; // 4 B
    char status; // 1 B
} User;

 

 

int 4바이트, char 1바이트

user구조체 크기는 9바이트 예상 된다.

자료형 크기는 sizeof(자료형)로 알 수 있다.

#include<stdio.h>

typedef struct
{
    int power;
    int level;
    char status;
} User;

int main()
{
    User user;

    printf("power 크기 = %d \n", sizeof(user.power));
    printf("level 크기 = %d \n", sizeof(user.level));
    printf("status 크기 = %d \n", sizeof(user.status));

    printf("user 크기 = %d \n", sizeof(user));
}

 

power, level, status 변수는

각 자료형 크기를 가지지만

구조체 User 크기는 4 + 4 + 1 = 9가 아닌 12를 가진다.

패딩 비트 결과 예시

 

(user1.power) | (user1.level) | (user1.status)

■■■■ | ■■■■ | ■□□□


 

long long → 8B 자료형을 추가하였을 때

그 크기에 맞춰서 status 변수가 8B 까지 패딩 비트가 들어갔다.

#include<stdio.h>

typedef struct
{
    long long ID;
    int power;
    int level;
    char status;
} User;

int main()
{
    User user;

    printf("ID 크기 = %d \n", sizeof(user.ID)); // 8B
    printf("power 크기 = %d \n", sizeof(user.power)); // 4B
    printf("level 크기 = %d \n", sizeof(user.level)); // 4B
    printf("status 크기 = %d \n", sizeof(user.status)); // 1B

    printf("user 크기 = %d \n", sizeof(user)); // 24 B
}

 

 

8 + 4 + 4 + 8 = 24

■■■■■■■■ | ■■■■ | ■■■■ | ■□□□□□□□

패딩 비트 결과 예시

 

이러한 패팅비트는

소켓 통신과 같은 구조체 사용시 유의해야 한다.

반응형

'프로그래밍 언어 > C++' 카테고리의 다른 글

[C/C++] packed 키워드  (3) 2024.11.16
[C++] likely, unlikey 키워드 구문  (5) 2024.11.10
[C/C++] struct 차이 비교  (1) 2024.11.08
[C/C++] #define과 const 차이  (7) 2024.11.02
[C++] auto 키워드  (4) 2024.10.28

댓글