Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 인프런
- Cleancode
- udemy
- Algorithm
- greedy
- 생활코딩
- C
- 백준
- C언어
- 정수론
- BASIC
- 따라하며 배우는 C언어
- 따배씨
- 종만북
- web
- Python
- BOJ
- JavaScript
- Math
- dfs
- 따라하면서 배우는 C언어
- BFS
- php
- graph
- programmers
- String
- Algospot
- sorting
- server
- DP
Archives
- Today
- Total
몽상실현개발주의
[따배씨] 15.11 비트필드의 패딩 본문
따배씨 - 따라하며 배우는 C언어
15강 비트 다루기
15.11 비트필드 Bits-Fields 의 패딩 Padding
#include <stdio.h>
#include <limits.h> // CHAR_BIT
#include <stdbool.h>
#include <string.h>
void char_to_binary (unsigned char uc)
{
const int bits = CHAR_BIT * sizeof(unsigned char);
for (int i = bits - 1; i >= 0; i--)
{
printf("%d", (uc >> i) & 1);
}
}
void print_binary(char* data, int bytes)
{
for (int i = 0; i < bytes; i++)
{
char_to_binary(data[bytes - 1 - i]);
printf("\n");
}
}
int main()
{
struct{
bool option1 : 7;
bool option2 : 2;
} bbf;
// Error
// x-code 에서는 compiler 가 bool 에 1bit 초과한 bit 를 할당하지 못하게 함
printf("%zu bytes\n", sizeof(bbf));
// 0 bytes
struct {
unsigned short option1 : 8;
unsigned short option2 : 7;
//unsigned short : 0;
unsigned short option3 : 1;
} usbf;
printf("%zu bytes\n", sizeof(usbf));
// 2 bytes
struct {
unsigned int option1 : 1;
unsigned int option2 : 1;
} uibf;
printf("%zu bytes\n", sizeof(uibf));
// 4 bytes
return 0;
}
- 32bit CPU는 메모리에서 값을 읽어 올 때 한번에 4byte(32bit), 64bit CPU는 한번에 8byte (64bit) 를 읽음 - word 단위
- 구조체에 접근 시 메모리를 읽는 횟수 (효율성) 을 높이기 위하여, 메모리 공간을 낭비하더라도 성능을 높이기 위해 padding-bit 를 사용
이 글의 모든 사진과 내용의 출처는 홍정모 교수님께 있음을 알려드립니다.
http://blog.naver.com/atelierjpro
http://www.inflearn.com/course/following-c
'Language > C' 카테고리의 다른 글
[따배씨] 16.1 전처리기가 해주는 일들 (0) | 2021.08.03 |
---|---|
[따배씨] 15.12 메모리 줄맞춤 alignof, alignas (0) | 2021.07.29 |
[따배씨] 15.10 비트필드의 사용방법 (0) | 2021.07.27 |
[따배씨] 15.9 구조체 안의 비트필드 (0) | 2021.07.27 |
[따배씨] 15.8 RGBA 색상 비트 마스크 연습문제 (0) | 2021.07.25 |
Comments