c语言的位和位段结构的运算
来源:互联网 发布:为什么软件下载失败 编辑:程序博客网 时间:2024/05/29 16:28
写的原因:
1.更加详细的介绍,对初学者的指导。
2.记录自己生活。
内容:
C语言是一个非常灵活的语言,虽然它是面向过程的语言,但是可以定义结构,定义自己的类型。上可以进行接近面向对象,下可以达到硬件的汇编。不说这些了。
首先,要想使用c语言的位域结果,必须了解unsigned类型,它是无符号类型,并且是按位存贮的。所以全部存贮的是0,1。
其次,了解运算符。语言提供了六种位运算符:
& 按位与
| 按位或
^ 按位异或
~ 取反
<< 左移
>> 右移
至于这些运算规则,我就不啰嗦了。参考C语言教科书。
下面来看位段结构:
位段结构也是一种数据结构,只不过其中含有以为为单位定义存贮长度的整数类型的位段成员。
定义方法:
struct bytedata
{
unsigned a:2;//位段a
unsigned b:2;
unsigned :2;//无名位,不能访问,为什么要设置,下面介绍
unsigned :0;//标识下一字段从下一字边界开始
int i;//成员i
}data;
为什么要设置无名段:由于每一个位段不能超过C语言版本的字长,当作填充用。
什么是字边界:即以C语言版本的字长为单位,下一字长的开始位置。
应该注意一下几点:
1.位段长度不能超过存贮单元(字长)。
2.可以定义无名段。
3.可以定义:0,设置从下一字长开始。
4.不能进行取地址运算。
5.位段可以使用%d,%c,%x输出。
6.在表达式中是整数。
7.应用像结构体一样进行引用。
8.前面是地位后面是高位。
9.位段支持所有的位操作。
现在已经说的很明白了。
简单的附一个赋值代码:
#include"stdio.h"
typedef struct Test
{
unsigned char b0:8;
unsigned char b1:8;
unsigned char b2:8;
unsigned char b3:8;
}BTest;
void main()
{
BTest c,d,e;
c.b0=1;
c.b1=2;
c.b2=3;
c.b3=4;
d.b0=0;
d.b1=1;
d.b2=2;
d.b3=3;
e.b0=c.b0^d.b0;
printf("%d%d%d",c.b0,c.b1,e.b0);
}
- c语言的位和位段结构的运算
- C语言的位段
- C语言:位运算 位段
- C语言结构体中位域(位段)的使用
- 【C】浅谈c语言里面的结构体和位段!!!
- C语言的位运算
- c语言的位运算
- C语言的位运算
- C语言 中结构体的位域(位段)
- C语言位域和位段
- C语言当中位段的使用
- c语言当中位段的使用
- c语言当中位段的使用
- C语言当中位段的使用
- C语言 位段的简单示例
- 【c语言】位段赋值的例子
- 解析c语言结构体和位段
- C语言中用结构实现位段
- 20091210日计划
- lingq 模糊查询
- 设备文件系统(DevFS)
- 好的数据结构=程序代码
- WinCE 应用程序开机自启动方法
- c语言的位和位段结构的运算
- sharepoint 关于 在数据表中编辑 share point server 2003 在数据表中编辑 未安装与 Windows SharePoint Services 兼容的数据表组件。
- 行列转换——求学生成绩
- 创造者的鉴赏力
- iPhone通过UIImagePickerController选择图片
- curl使用
- SqlHelper.cs通用类之C#连接SqlServer
- Cron 表达式学习
- Ubuntu下man手册页完善