#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)的更多相关文章

  1. 12、C#基础整理(结构体)

    结构体 1.概念: 结构体是写在main函数外的数据结构,由不同类型的数据组合成一个整体,这些组合在一个整体中的数据是互相联系的 2.声明方式: struct 结构体名 { 成员变量(由类型名+成员名 ...

  2. C#整理8——结构体

    结构体:相当于是我们自己定义的一种复杂的类型.int... double float bool char string DateTime 数组类型生活中大部份的对象都是复合型的对象. 如何定义结构体类 ...

  3. ZZZ_整理的结构

    A.头尾 添加/移除 B.随机存取 C.数据存取 1.构造函数 2.赋值 3.迭代器操作 4.插入 5.删除 6.交换 7.大小 8.查找

  4. mysql 操作表结构

    整理一下对mysql表结构的简单操作,dos窗口模式的,现在基本上都是些图形化操作mysql,像这种命令形式的少了很多,暂时记忆点,以防以后忘记. 从数据库的创建开始: show databases; ...

  5. CSS样式命名整理(非原创)

    非原创,具体出自哪里忘了,如果侵害您的利益,请联系我. CSS样式命名整理 页面结构 容器: container/wrap 整体宽度:wrapper 页头:header 内容:content 页面主体 ...

  6. golang 结构体中的匿名接口

    golang 结构体中的匿名接口 代码示例 golang 中,可以给结构体增加匿名field,可参考 unknwon 大神的书. 匿名字段和内嵌结构体 但,golang同时也可以给结构体定义一个匿名i ...

  7. 将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. ...

  8. 程序媛计划——mysql修改表结构

    #查看表的结构 mysql> desc score; +------------+--------------+------+-----+---------+----------------+ ...

  9. spring-session之四:Spring Session下的Redis存储结构

    spring-session项目启动后 127.0.0.1:6379> keys * 1) "spring:session:index:org.springframework.sess ...

随机推荐

  1. 谷歌地图api 开发 (转载)

    https://www.cnblogs.com/520lin/p/5800024.html

  2. Beta阶段——2

    一.提供当天站立式会议照片一张: 二. 每个人的工作 (有work item 的ID) (1) 昨天已完成的工作: 昨天主要是对beta阶段的任务做了总结 (2) 今天计划完成的工作: 今天主要是对管 ...

  3. C++ STL 常用排序算法

    C++ STL 常用排序算法 merge() 以下是排序和通用算法:提供元素排序策略 merge: 合并两个有序序列,存放到另一个序列. 例如: vecIntA,vecIntB,vecIntC是用ve ...

  4. MVC如何设置启动页

    1.解决方案下的项目,右键,属性,Web,特定页,切换下其他选项以保存

  5. Navicat使用教程:获取MySQL中的行数(第1部分)

    下载Navicat Premium最新版本 Navicat Premium是一个可连接多种数据库的管理工具,它可以让你以单一程序同时连接到MySQL.Oracle及PostgreSQL数据库,让管理不 ...

  6. 读取Maven项目下resources目录下的配置文件(properties为例)

    配置文件:xxxxx.properties a.url=******************** b.url=---------------------------------- 读取配置文件: im ...

  7. 《Linux内核设计与实现》第18章读书笔记

    第十八章 调试 一.调试开始前的准备 1.准备开始 bug 藏匿bug的版本 相关内核代码的知识 成功调试的关键在于能否将错误重现 2.内核中的bug 其产生原因无数,表象变化也多种多样.从隐藏在源代 ...

  8. tomcat和servlet的基本了解

    看不清的可以下载到本地观看

  9. 解题:POI 2008 Plot purchase

    题面 原来看过然后没做,结果板板把这道题改了改考掉了,血亏=.= 首先看看有没有符合条件的点.如果没有开始寻找解,先把所有的大于$2*k$的点设为坏点,然后求最大子矩形,只要一个最大子矩形的权值和超过 ...

  10. 【最小割】【网络流24题】【P2762】 太空飞行计划问题

    Description W 教授正在为国家航天中心计划一系列的太空飞行.每次太空飞行可进行一系列商业性实验而获取利润.现已确定了一个可供选择的实验集合E={E1,E2,-,Em},和进行这些实验需要使 ...