共用体及枚举类型及位运算

尾插

头删

尾删

清理节点

一,共用体

1,共用体中成员占用共同的内存空间,彼此间相互覆盖,成员地址相同,值为最后传入的值。

sizeof(d)为4

2,判断大小端存储

指针方法判断大小端存储

二,枚举类型

枚举类型与整型兼容

enum Week声明week取值范围

sizeof(w)为4;

213行Mon = 4,则后面值为依次加1,但sun仍为0。

三,typedef定义类型

为已有数据类型起别名

typedef int INT;    INT为类型名

typedef int ARRAY[10]

ARRAY a;   a为一个整型一维数组。

四,位运算

操作数为整型或与整型兼容

按位与运算符 [ & ]

运算规则:依次比较两个二进制数的每一位,全部为1则为1,否则为0的规则,依次计算出一个新的二进制数:

即:0 & 0= 0 ,0 & 1= 0,1 & 0= 0, 1 & 1= 1
例: 39 & 21 --> 0010 0111 & 0001 0101 --> 0000 0101

按位或运算符 [ | ]

运算规则:依次比较两个二进制数的每一位,只要有一个为1则为1,否则为0的规则,依次计算出一个新的二进制数:

即:0 | 0= 0 ,0 | 1= 1,1 | 0= 1, 1 | 1= 1

例: 39 | 21 --> 0010 0111 | 0001 0101 --> 0011 0111

异或运算符 [ ^ ]

运算规则:依次比较两个二进制数的每一位,按照相同为0,不同为1的规则,依次计算出一个新的二进制数:

即:0 ^ 0= 0 ,0 ^ 1= 1,1 ^ 0= 1, 1 ^ 1= 1
例: 39 ^ 21 --> 0010 0111 ^ 0001 0101 --> 0011 0010

取反运算符 [ ~ ]

运算规则:对于二进制数的每一位,1变0,0变1,得到一个新的二进制数:

即:~0 = 1 , ~1= 0

i = 3,(011);

~i = 0xFFFFFFFC = i ^ 0xFFFFFFFF
<<: 左移、>> : 右移
箭头指向哪就是向哪移。左移之后右边补0,右移之后在左边补0

结论: 对于正数而言,其实左移和右移n位就相当于乘以或者除以2的n次方。

十进制的5,该数二进制为 0000 0101,将该数左移3为0010 1000,转换成十进制为 40, 验证了上面的结论:5左移三位就等于5乘以2的三次方等于40。
十进制的40,右移三位就相当于除以8(2的三次方)结果为5。

可以用来二进制计数1的个数

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值