Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial programming >> Bahasa C

C - Bidang Bit

Misalkan program C Anda berisi sejumlah variabel TRUE/FALSE yang dikelompokkan dalam struktur yang disebut status, sebagai berikut −

struct {
   unsigned int widthValidated;
   unsigned int heightValidated;
} status;

Struktur ini membutuhkan 8 byte ruang memori tetapi sebenarnya, kita akan menyimpan 0 atau 1 di setiap variabel. Bahasa pemrograman C menawarkan cara yang lebih baik untuk memanfaatkan ruang memori dalam situasi seperti itu.

Jika Anda menggunakan variabel seperti itu di dalam struktur, maka Anda dapat menentukan lebar variabel yang memberi tahu kompiler C bahwa Anda hanya akan menggunakan jumlah byte tersebut. Sebagai contoh, struktur di atas dapat ditulis ulang sebagai berikut −

struct {
   unsigned int widthValidated : 1;
   unsigned int heightValidated : 1;
} status;

Struktur di atas membutuhkan 4 byte ruang memori untuk variabel status, tetapi hanya 2 bit yang akan digunakan untuk menyimpan nilai.

Jika Anda akan menggunakan hingga 32 variabel masing-masing dengan lebar 1 bit, maka struktur status juga akan menggunakan 4 byte. Namun begitu Anda memiliki 33 variabel, itu akan mengalokasikan slot memori berikutnya dan akan mulai menggunakan 8 byte. Mari kita periksa contoh berikut untuk memahami konsep −

Demo 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\n", sizeof(status1));
   printf( "Memory size occupied by status2 : %d\n", sizeof(status2));
   return 0;
}

Ketika kode di atas dikompilasi dan dieksekusi, menghasilkan hasil sebagai berikut

Memory size occupied by status1 : 8
Memory size occupied by status2 : 4

Deklarasi Bidang Bit

Deklarasi bidang bit memiliki bentuk berikut di dalam struktur

struct {
   type [member_name] : width ;
};

Tabel berikut menjelaskan elemen variabel bidang bit −

No.Pr. Elemen &Deskripsi
1

ketik

Tipe integer yang menentukan bagaimana nilai bit-field diinterpretasikan. Jenisnya mungkin int, int masuk, atau int tidak ditandatangani.

2

nama_anggota

Nama bidang bit.

3

lebar

Jumlah bit dalam bidang bit. Lebar harus kurang dari atau sama dengan lebar bit dari jenis yang ditentukan.

Variabel yang didefinisikan dengan lebar yang telah ditentukan sebelumnya disebut bidang bit . Bidang bit dapat menampung lebih dari satu bit; misalnya jika Anda membutuhkan variabel untuk menyimpan nilai dari 0 hingga 7, maka Anda dapat mendefinisikan bidang bit dengan lebar 3 bit sebagai berikut −

struct {
   unsigned int age : 3;
} Age;

Definisi struktur di atas menginstruksikan kompiler C bahwa variabel usia hanya akan menggunakan 3 bit untuk menyimpan nilainya. Jika Anda mencoba menggunakan lebih dari 3 bit, maka itu tidak akan memungkinkan Anda untuk melakukannya. Mari kita coba contoh berikut

Demo Langsung
#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;
}

Ketika kode di atas dikompilasi akan dikompilasi dengan peringatan dan ketika dijalankan, menghasilkan hasil sebagai berikut −

Sizeof( Age ) : 4
Age.age : 4
Age.age : 7
Age.age : 0

Bahasa C

  1. C# Bitwise dan Bit Shift Operator
  2. Jenis Fungsi yang Ditentukan Pengguna dalam Pemrograman C
  3. Lewati array ke fungsi di C
  4. C struct dan Pointer
  5. Jawa Kata Kunci ini
  6. Enkapsulasi Java
  7. Struktur C++ Dengan Contoh
  8. C - Fungsi
  9. C - Argumen Variabel
  10. MATLAB - Integrasi