用结构体概念解释C语言中的位域

cserver side programmingprogramming

位域用于以位为单位指定变量的大小。一般在结构体内部定义。

  • 位域:1字节=8位

例如,

下面解释一个例子 −

Struct info{
   int x:2;
};

这里,x 占用 2 位。

将任何值分配给超出其范围的位字段都是无效的。

我们不能使用 scanf 语句来输入位字段的值,因为大小和地址运算符不能应用于位字段。

我们可以分配给位字段的数据类型可以是 int、signed int、unsigned int。

程序

以下是 针对 unsigned int

的 C 程序
#include<stdio.h>
struct info{
   unsigned int x:3;// 将位字段分配给结构内的 unsigned int
};
main(){
   struct info i;
   i.x=8;
   printf("%d",i.x);
}

输出

输出如下 &miuns;

0

解释

  • unsigned int 的范围公式为 0 到 2n-1,n=位数。

  • 这里 n=3,即 unsigned int 介于 0 到 23 -1 之间,相当于 0 到 7。

程序

参考程序下面给出 for int

#include<stdio.h>
struct info{
   int x:3;// 将位字段分配给结构内的 int
};
main(){
   struct info i;
   i.x=4;
   printf("%d",i.x);
}

输出

您将得到以下输出 −

-4

解释

  • 有符号整数的范围公式 = (-2(n-1)+1) 到 2n-1,其中 n 是位数。
  • 在程序中,n=3
  • 将其代入公式中,我们得到以下结果 −
=(-2(3-1)+1) to 23-1
=(-22+1) to 22
= -3 to 4 i.e., -3,-2,-1,0,1,2,3,4,

相关文章