[整理]C结构实现位段(bit field)
#include <stdio.h>
#include <string.h> typedef struct A{
int a:5;
int b:3;
unsigned c:8;
unsigned d:8;
} Type_A; /* VS2010, Windows XP, Debug模式下运行 */
int main(void)
{
struct A a;
char s[]="12345678"; printf( "%d\n",sizeof(Type_A) );//4
printf("%d\n",sizeof(a));//4 memcpy(&a,s,3);
printf("%d\n",a.a);//'1'的低位 -15
printf("%d\n",a.b);//'1'的高位 1
printf("%d\n",a.c-'0');//'3' 51
printf("%d\n",a.d-'0');//'4' 52 return 0;
}
'1'(49)的二进制 00110001,
a.a=10001 (-15)
a.b=001 (1)
由A的定义已知a.a(10001)是代表一个有符号的int型,
先执行符号位扩展得到11110001,
再减一得到11110000,
再取反得到10001111,就是-15的源码了.
所以a.a的值为-15, 同理,a.b为1。
参考:
http://www.cnblogs.com/bigrabbit/archive/2012/09/20/2695543.html
[整理]C结构实现位段(bit field)的更多相关文章
- 12、C#基础整理(结构体)
结构体 1.概念: 结构体是写在main函数外的数据结构,由不同类型的数据组合成一个整体,这些组合在一个整体中的数据是互相联系的 2.声明方式: struct 结构体名 { 成员变量(由类型名+成员名 ...
- C#整理8——结构体
结构体:相当于是我们自己定义的一种复杂的类型.int... double float bool char string DateTime 数组类型生活中大部份的对象都是复合型的对象. 如何定义结构体类 ...
- ZZZ_整理的结构
A.头尾 添加/移除 B.随机存取 C.数据存取 1.构造函数 2.赋值 3.迭代器操作 4.插入 5.删除 6.交换 7.大小 8.查找
- mysql 操作表结构
整理一下对mysql表结构的简单操作,dos窗口模式的,现在基本上都是些图形化操作mysql,像这种命令形式的少了很多,暂时记忆点,以防以后忘记. 从数据库的创建开始: show databases; ...
- CSS样式命名整理(非原创)
非原创,具体出自哪里忘了,如果侵害您的利益,请联系我. CSS样式命名整理 页面结构 容器: container/wrap 整体宽度:wrapper 页头:header 内容:content 页面主体 ...
- golang 结构体中的匿名接口
golang 结构体中的匿名接口 代码示例 golang 中,可以给结构体增加匿名field,可参考 unknwon 大神的书. 匿名字段和内嵌结构体 但,golang同时也可以给结构体定义一个匿名i ...
- 将c语言的结构体定义变成对应的golang语言的结构体定义,并将golang语言结构体变量的指针传递给c语言,cast C struct to Go struct
https://groups.google.com/forum/#!topic/golang-nuts/JkvR4dQy9t4 https://golang.org/misc/cgo/gmp/gmp. ...
- 程序媛计划——mysql修改表结构
#查看表的结构 mysql> desc score; +------------+--------------+------+-----+---------+----------------+ ...
- spring-session之四:Spring Session下的Redis存储结构
spring-session项目启动后 127.0.0.1:6379> keys * 1) "spring:session:index:org.springframework.sess ...
随机推荐
- 面试问题总结二(技术能力-PHP)----Ⅱ
20.支付功能的实现? 答:在线支付一般来说有两种实现方式,一种是调用各个银行提供的接口,另一种是使用第三方集成好的支付功能,两种方式各有优劣.对于第三方支付来说会需要提交企业5证来验证,还会有部分手 ...
- Linux 下安装mysql 8.0.11(CentOS 7.4 系统)
CentOS 7 自带MariaDB (前mysql开发工程师开发的,因此与吗,mysql 有很多相似之处) 1.检查卸载自带的MariaDB rpm -qa|grep mariadb //查询出来已 ...
- HTML之绝对路径与相对路径
路径指文件存放的位置,在网页中利用路径可以引用文件,插入图像.视频等.表示路径的方法有两种:相对路径,绝对路径.以下讨论均是在HTML环境下进行. 相对路径 相对路径是指目标相对于当前文件的路径,网页 ...
- [BZOJ4446]SCoi2015 小凸玩密室 树形DP(烧脑高能预警)
4446: [Scoi2015]小凸玩密室 Time Limit: 10 Sec Memory Limit: 128 MB Description 小凸和小方相约玩密室逃脱,这个密室是一棵有n个节点 ...
- 【刷题】BZOJ 3668 [Noi2014]起床困难综合症
Description 21 世纪,许多人得了一种奇怪的病:起床困难综合症,其临床表现为:起床难,起床后精神不佳.作为一名青春阳光好少年,atm 一直坚持与起床困难综合症作斗争.通过研究相关文献,他找 ...
- 【刷题】洛谷 P3455 [POI2007]ZAP-Queries
题目描述 Byteasar the Cryptographer works on breaking the code of BSA (Byteotian Security Agency). He ha ...
- 【BZOJ3534】重建(矩阵树定理)
[BZOJ3534]重建(矩阵树定理) 题面 BZOJ 洛谷 题解 这.... 矩阵树定理神仙用法???? #include<iostream> #include<cmath> ...
- phpredis pipeline
通过pipeline方式将client端命令一起发出,redis server会处理完多条命令后,将结果一起打包返回client,从而节省大量的网络延迟开销.
- 前端学习 -- Css -- 伪元素
:first-letter 表示第一个字符 :first-line 表示文字的第一行 :before 选中元素的最前边,一般该伪类都会结合content一起使用,通过content可以向指定位置添加内 ...
- APK反编译之一:基础知识—APK、Dalvik字节码和smali文件
refs: APK反编译之一:基础知识http://blog.csdn.net/lpohvbe/article/details/7981386 APK反编译之二:工具介绍http://blog.csd ...