摘要:本文主要向大家介绍了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+频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号