C/C++知识点:位域计算详解+例子
小标 2018-06-25 来源 : 阅读 1249 评论 0

摘要:本文主要向大家介绍了C/C++知识点的位域计算详解+例子,通过具体的代码向大家展示,希望对大家学习C/C++知识点有所帮助。

本文主要向大家介绍了C/C++知识点的位域计算详解+例子,通过具体的代码向大家展示,希望对大家学习C/C++知识点有所帮助。

1 定义一个位域的结构体

[cpp] view plain copy
1. typedef struct  
2. {  
3.     unsigned char a:3;/*0-2位*/  
4.     unsigned char b:2;/*3-4位*/  
5.     unsigned char c:3;/*5-7位*/  
6.   
7. }Demo;  
[cpp] view plain copy
1. void show1010(int val){  
2.     printf("%d : ",val);  
3.     for(int i=7;i>=0;i--){  
4.         //依次输出它的每一个二进制位  
5.         printf("%d",(val & 1<<i)!=0);  
6.     }  
7.     printf("\n");  
8. }

 

2  代码验证

[cpp] view plain copy
1. int main()  
2. {   
3.       
4.     Demo *tt;  
5.     char buf[100];  
6.     memset(buf,0,100);  
7.     tt = (Demo*)&buf[0];  
8.     tt->a = 5;  
9.     tt->b = 2;  
10.     tt->c = 7;  
11.   
12.     //一个字节值  
13.     printf("value:%d\n",buf[0]);  
14.   
15.     //依次输出它的每一个二进制位  
16.     show1010(buf[0]);  
17.   
18.     //当前一个字节值为: -11   
19.     //1 1 1 1   0 1 0 1  
20.     //1 1 1   1 0    1 0 1  
21.     //  7      2       5  
22.     //  c      b       a  
23.       
24.     // 要得到a值,即左边5个位与0做与运算  
25.     // 与运算  
26.     //-11    :1 1 1 1 0 1 0 1  =》 -11  
27.     //0x07   :0 0 0 0 0 1 1 1  =》 0x07  
28.     //与结果 :0 0 0 0 0 1 0 1     
29.     int a = buf[0] & 0x07;  
30.     //依次输出它的每一个二进制位  
31.     show1010(a);  
32.   
33.     //-11    :1 1 1 1 0 1 0 1  =》 -11  
34.     //0x07   :0 0 0 1 1 0 0 0  =》 0x18  
35.     //与结果 :0 0 0 1 0 0 0 0  
36.     // 向右边移动3位  
37.     int b = (buf[0] & 0x18) >> 3;  
38.     //依次输出它的每一个二进制位  
39.     show1010(b);  
40.   
41.     printf("a:%d\n",a);  
42.     printf("b:%d\n",b);  
43.   
44.       return 0;  
45. }

 

 

3 效果图:

C/C++知识点:位域计算详解+例子

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程