Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

คำอธิบายบิตฟิลด์ (Bit Field) ในภาษา C โดยใช้แนวคิดโครงสร้าง (Structure)


บิตฟิลด์ (Bit Field) ใช้ระบุขนาดของตัวแปรในหน่วยบิต โดยทั่วไปนิยามภายในโครงสร้าง (Structure)

  • บิตฟิลด์: 1 ไบต์ = 8 บิต

ตัวอย่าง:

struct info {
    int x:2;
};

ที่นี่ x ใช้พื้นที่ 2 บิต

ไม่ถูกต้องที่จะกำหนดค่าให้บิตฟิลด์เกินช่วงที่กำหนด

ไม่สามารถใช้ scanf เพื่อรับค่าบิตฟิลด์ได้ เนื่องจาก sizeof และตัวดำเนินการที่อยู่ (&) ไม่สามารถใช้กับบิตฟิลด์ได้

ชนิดข้อมูลที่กำหนดให้บิตฟิลด์ได้คือ int, signed int, unsigned int

โปรแกรม

โปรแกรม C สำหรับ unsigned int:

#include <stdio.h>

struct info {
    unsigned int x:3; // กำหนดบิตฟิลด์ให้ unsigned int ภายในโครงสร้าง
};

int main() {
    struct info i;
    i.x = 8;
    printf("%d", i.x);
    return 0;
}

ผลลัพธ์

ผลลัพธ์มีดังนี้:

0

คำอธิบาย

  • สูตรช่วงสำหรับ unsigned int คือ 0 ถึง 2^n - 1 โดย n = จำนวนบิต

  • ที่นี่ n = 3 หมายถึง unsigned int อยู่ระหว่าง 0 ถึง 2^3 - 1 = 0 ถึง 7

คำอธิบายบิตฟิลด์ (Bit Field) ในภาษา C โดยใช้แนวคิดโครงสร้าง (Structure)

โปรแกรม

โปรแกรม สำหรับ int:

#include <stdio.h>

struct info {
    int x:3; // กำหนดบิตฟิลด์ให้ int ภายในโครงสร้าง
};

int main() {
    struct info i;
    i.x = 4;
    printf("%d", i.x);
    return 0;
}

ผลลัพธ์

จะได้ผลลัพธ์ดังนี้:

-4

คำอธิบาย

  • สูตรช่วงสำหรับ signed int = (-2^(n-1)) ถึง 2^(n-1) - 1 โดย n คือจำนวนบิต
  • ในโปรแกรม n = 3
  • แทนค่าในสูตรจะได้ผลลัพธ์ดังนี้:
= (-2^(3-1)) ถึง 2^(3-1) - 1
= (-2^2) ถึง 2^2 - 1
= -4 ถึง 3
คือ -4, -3, -2, -1, 0, 1, 2, 3