用结构体概念解释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,