Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Adakah bahasa Linux C mempunyai bit?

Adakah bahasa Linux C mempunyai bit?

藏色散人
藏色散人asal
2023-03-28 10:57:511743semak imbas

Bahasa Linux C mempunyai bit; dalam bahasa mikropengawal C, bit ialah kata kunci baharu, selalunya digunakan untuk mentakrifkan "pembolehubah bit"; Atau definisi bit; 2. Tentukan melalui medan bit (dalam struktur);

Adakah bahasa Linux C mempunyai bit?

Persekitaran pengendalian tutorial ini: sistem linux5.9.8, komputer Dell G3.

Adakah sedikit untuk bahasa Linux C?

Ya.

Bahasa C mentakrifkan data jenis bit:

1. Definisi melalui sbit atau bit

sbit dipetakan ke port IO (IO seperti P1^ 1 "bit" port)

bit berada dalam ruang yang boleh dialamatkan bit dalam RAM dan biasanya digunakan sebagai bit bendera untuk pertimbangan program.

Anggap mereka sebagai satu luaran (sbit) dan satu dalaman (bit).

Dalam bahasa mikropengawal C, bit ialah kata kunci baharu, selalunya digunakan untuk mentakrifkan "pembolehubah bit"

2. Takrifkan melalui medan bit (dalam struktur)

Definisi medan bit dan perihalan pembolehubah medan bit Definisi medan bit adalah serupa dengan definisi struktur, bentuknya ialah:

nama struktur medan bit struct

{ senarai medan bit}; > Bentuk senarai medan bit ialah: Jenis nama domain bit penentu: panjang medan bit

Contohnya:

Penerangan pembolehubah medan bit adalah sama seperti perihalan pembolehubah struktur. Anda boleh mentakrifkan dahulu dan kemudian menerangkan, mentakrifkan dan menerangkan pada masa yang sama, atau menerangkan secara langsung. Contohnya:
struct bs 
{ 
 int a:8; 
 int b:2; 
 int c:6; 
};

Ia menunjukkan bahawa data ialah pembolehubah bs, menduduki dua bait secara keseluruhan. Medan bit a menduduki 8 bit, medan bit b menduduki 2 bit, dan medan bit c menduduki 6 bit. Terdapat beberapa penjelasan untuk takrif medan bit:
struct bs 
{ 
 int a:8; 
 int b:2; 
 int c:6; 
}data;

 1. Medan bit mesti disimpan dalam bait yang sama dan tidak boleh menjangkau dua bait. Jika ruang baki satu bait tidak mencukupi untuk menyimpan medan bit yang lain, medan bit hendaklah disimpan dari unit seterusnya. Anda juga boleh dengan sengaja memulakan medan sedikit dari unit seterusnya. Contohnya:

Dalam definisi medan bit ini, a menduduki 4 bit bait pertama, isi 4 bit terakhir dengan 0 untuk menunjukkan tidak menggunakan, b bermula dari bait kedua, menduduki 4 bit , c Menduduki 4 jawatan.
struct bs 
{ 
 unsigned a:4 
 unsigned :0 /*空域*/ 
 unsigned b:4 /*从下一单元开始存放*/ 
 unsigned c:4 
}

 2. Memandangkan medan bit tidak dibenarkan menjangkau dua bait, panjang medan bit tidak boleh lebih besar daripada panjang satu bait, yang bermaksud ia tidak boleh melebihi 8 bit binari.

3. Medan bit tidak boleh mempunyai nama domain bit, yang mana ia hanya digunakan untuk pengisian atau pelarasan kedudukan. Medan bit yang tidak dinamakan tidak boleh digunakan. Contohnya:

Seperti yang dapat dilihat daripada analisis di atas, medan bit pada dasarnya adalah jenis struktur, tetapi ahlinya diperuntukkan dalam istilah binari.
struct k 
{ 
 int a:1 
 int :2 /*该2位不能使用*/ 
 int b:3 
 int c:2 
};

2. Penggunaan medan bit

Penggunaan medan bit adalah sama seperti penggunaan ahli struktur Bentuk amnya ialah: Nama pembolehubah medan bit • Nama domain bit Medan bit membenarkan output dalam pelbagai format.

Contoh program di atas mentakrifkan struktur medan bit bs, dan tiga medan bit ialah a, b dan c. Bit pembolehubah jenis bs dan pembolehubah penunjuk PBit yang menunjuk kepada jenis bs dijelaskan. Ini bermakna bahawa medan bit juga boleh menggunakan penunjuk.
main(){ 
 struct bs 
 { 
  unsigned a:1; 
  unsigned b:3; 
  unsigned c:4; 
 } bit,*PBit; 
 bit.a=1; 
 bit.b=7; 
 bit.c=15; 
 printf("%d,%d,%d\n",bit.a,bit.b,bit.c); 
 PBit=&bit; 
 PBit->a=0; 
 PBit->b&=3; 
 PBit->c|=1; 
 printf("%d,%d,%d\n",PBit->a,PBit->b,PBit->c); 
}

Baris 9, 10, dan 11 program memberikan nilai masing-masing kepada tiga medan bit. (Perlu diingatkan bahawa tugasan tidak boleh melebihi julat medan bit yang dibenarkan) Baris 12 program mengeluarkan kandungan tiga medan dalam format integer. Baris 13 menghantar alamat bit pembolehubah medan bit ke pembolehubah penunjuk PBit. Baris 14 menggunakan penunjuk untuk menetapkan semula medan bit a kepada 0. Baris 15 menggunakan operator bit majmuk "&=" Baris ini bersamaan dengan: PBit->b=PBit->b&3. Nilai asal dalam medan bit b ialah 7, dan hasil operasi AND dengan 3 ialah 3 (111&011=011, nilai perpuluhan ialah 3). Begitu juga, operasi bit kompaun "|=" digunakan dalam baris 16 program, yang bersamaan dengan: PBit->c=PBit->c|1 dan hasilnya ialah 15. Baris 17 program mengeluarkan nilai tiga medan ini menggunakan penunjuk.

Tujuan utama menggunakan medan bit adalah untuk memampatkan storan Peraturan am ialah:

1) Jika jenis medan bit bersebelahan adalah sama dan jumlah lebar bitnya adalah kurang. daripada saiz saiz jenis , maka medan berikut akan disimpan serta-merta di sebelah medan sebelumnya sehingga ia tidak dapat ditampung; 2) Jika jenis medan medan bit bersebelahan adalah sama, tetapi jumlahnya; daripada lebar bit mereka adalah lebih besar daripada saiz saiz jenis, maka medan berikut Medan akan bermula dari unit storan baharu dengan offset yang merupakan gandaan integer saiz jenisnya; medan diselingi dengan medan bukan medan bit, tiada pemampatan akan dilakukan;

4) Jumlah saiz keseluruhan struktur ialah gandaan integer saiz ahli jenis asas terluas.

3. Beroperasi dengan menggabungkan operator bit

Pembelajaran yang disyorkan: "

tutorial video linux

"

Atas ialah kandungan terperinci Adakah bahasa Linux C mempunyai bit?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn