recherche
  • Se connecter
  • S'inscrire
Réinitialisation du mot de passe réussie

Suivez les projets qui vous intéressent et découvrez les dernières actualités les concernant.

Champ de bits C

Collection 205
Lire 91674
temps de mise à jour 2016-09-11

Si la structure du programme contient plusieurs commutateurs, il n'y a que des variables VRAI/FAUX, comme suit :

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

Cette structure nécessite 8 octets d'espace mémoire, mais en fait, dans chaque Dans chaque variable , nous ne stockons que 0 ou 1. Dans ce cas, le langage C offre une meilleure façon d’utiliser l’espace mémoire. Si vous utilisez une telle variable dans une structure, vous pouvez définir la largeur de la variable pour indiquer au compilateur que vous n'utiliserez que ces octets. Par exemple, la structure ci-dessus peut être réécrite comme :

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

Maintenant, dans la structure ci-dessus, la variable d'état occupera 4 octets d'espace mémoire, mais seulement 2 bits sont utilisés pour stocker la valeur. Si vous utilisez 32 variables, chaque variable a une largeur de 1 bit, alors la structure d'état utilisera 4 octets, mais dès que vous utilisez une variable supplémentaire, si vous utilisez 33 variables, elle allouera la section de mémoire suivante à stocker. la 33ème variable, 8 octets seront utilisés à ce moment. Regardons l'exemple suivant pour comprendre ce concept :

#include <stdio.h>#include <string.h>/* 定义简单的结构 */struct{  unsigned int widthValidated;  unsigned int heightValidated;} status1;/* 定义位域结构 */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;}

Lorsque le code ci-dessus est compilé et exécuté, il produira les résultats suivants :

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

Déclaration de champ de bits

Bitfields sont déclarées au sein d'une structure sous la forme suivante :

struct{
  type [member_name] : width ;};

Voici une description des éléments variables dans un bitfield :

元素描述
type整数类型,决定了如何解释位域的值。类型可以是整型、有符号整型、无符号整型。
member_name位域的名称。
width位域中位的数量。宽度必须小于或等于指定类型的位宽度。

Les variables avec des largeurs prédéfinies sont appelées Bitfield. Les champs de bits peuvent stocker plus d'un chiffre. Par exemple, si vous avez besoin d'une variable pour stocker des valeurs de 0 à 7, vous pouvez définir un champ de bits d'une largeur de 3 bits, comme suit :

struct{  unsigned int age : 3;} Age;

. La définition de structure ci-dessus indique au compilateur C que la variable age n'utilisera que 3 bits pour stocker cette valeur, et si vous essayez d'utiliser plus de 3 bits, cela ne fonctionnera pas. Regardons l'exemple suivant :

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

Lorsque le code ci-dessus est compilé, il sera accompagné d'un avertissement. Lorsque le code ci-dessus est exécuté, il produira les résultats suivants :

Sizeof( Age ) : 4Age.age : 4Age.age : 7Age.age : 0
.
Outils d'IA chauds
Undress AI Tool
Undress AI Tool

Images de déshabillage gratuites

AI Clothes Remover
AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undresser.AI Undress
Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

Stock Market GPT
Stock Market GPT

Recherche d'investissement basée sur l'IA pour des décisions plus intelligentes

Outil populaire
Bloc-notes++7.3.1
Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6
Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac
SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)