Dalam bahagian ini, kita akan memahami apa itu medan bit dalam bahasa C.
Andaikan program C anda mengandungi banyak pembolehubah BENAR/SALAH yang dikumpulkan dalam struktur yang dipanggil keadaan seperti berikut -
struct { unsigned int widthValidated; unsigned int heightValidated; } status;
Struktur memerlukan 8 bit ruang memori, tetapi pada hakikatnya, kami akan menyimpan dalam setiap pembolehubah 0 atau 1. Dalam kes ini, bahasa pengaturcaraan C menyediakan cara yang lebih baik untuk menggunakan ruang memori.
Jika anda menggunakan pembolehubah sedemikian dalam struct, maka anda boleh menentukan lebar pembolehubah untuk memberitahu pengkompil C bahawa anda hanya menggunakan bilangan bit ini. Sebagai contoh, struktur di atas boleh ditulis semula seperti berikut -
struct { unsigned int widthValidated : 1; unsigned int heightValidated : 1; } status;
Struktur di atas memerlukan 4 bit ruang memori untuk pembolehubah keadaan, tetapi hanya menggunakan 2 bit untuk menyimpan nilai.
Jika anda menggunakan sehingga 32 pembolehubah, setiap pembolehubah adalah 1 bit lebar, maka struktur status juga akan menggunakan 4 bit. Walau bagaimanapun, sebaik sahaja anda mempunyai 33 pembolehubah, ia memperuntukkan slot memori seterusnya dan mula menggunakan 8 bit. Mari kita semak contoh berikut untuk memahami konsep -
Demonstrasi Langsung
#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</p><p>", sizeof(status1)); printf( "Memory size occupied by status2 : %d</p><p>", sizeof(status2)); return 0; }
Memory size occupied by status1 : 8 Memory size occupied by status2 : 4
Pengisytiharan medan bit mempunyai bentuk berikut di dalam struktur -
rreee berikut menggambarkan bit medan Elemen pembolehubah -penerangan | th> |
---|---|
menentukan cara jenis integer nilai medan bit ditafsirkan. Jenis ini boleh menjadi int, int yang ditandatangani, atau int yang tidak ditandatangani. | |
Nama medan bit. | |
Bilangan digit dalam medan bit. Lebar mestilah kurang daripada atau sama dengan lebar bit jenis yang ditentukan. |
struct { type [member_name] : width ; };
struct { unsigned int age : 3; } Age;
#include <stdio.h> #include <string.h> struct { unsigned int age : 3; } Age; int main( ) { Age.age = 4; printf( "Sizeof( Age ) : %d</p><p>", sizeof(Age) ); printf( "Age.age : %d</p><p>", Age.age ); Age.age = 7; printf( "Age.age : %d</p><p>", Age.age ); Age.age = 8; printf( "Age.age : %d</p><p>", Age.age ); return 0; }
Atas ialah kandungan terperinci Medan bit dalam C. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!