位运算的知识总结

1、位运算


(1)位运算包括:位逻辑运算和位移运算。


位逻辑运算:


按位与:&


按位或:|


按位异或:^


按位取反:~


(2)位移运算:


左移:<<   如果左移,低位补0;相当于算术乘以2


右移:>>   如果右移,高位补0;相当于算术除以2


(3)运算规则:


&:1&0=0  0&1=0 1&1=0 有0参加的直接为0,双方为1的是1。


|:1|0=1  0|1=1  0|0=0 1|1=1 只要有1结果为1,双方为0则为0。


^:双方一样的为0,双方不同的是1。


~:~0=1  ~1=0 取反。


2、特殊运算符


(1)参与运算的表达式:总是去运算数的二进制数字串进行运算。


(2)只能作用于整数和字符串


(3)运算结果:还是一个二进制数字符串,我们需要转化十进制来得到一个整数。


3、位运算:


求负数的补码:


原码:把一个十进制的整数(e.g:10),用二进制表示,得到的二进制的字符串(e.g:00001010)。


反码:在原码的基础上逐位取反,也就是1变0,0变1(e.g:11110101)。


补码:在反码的基础上加1。(e.g:11110110)


整数的补码:就是00001010。


4、位域


概念:C语言中允许在一个结果体中以单位来指定其成员所占内存长度,这种以位为单位的成员称为“为段”或“位域”(bit field)


struct 位域结构名{


...


类型说明符 位域名:位域长度;


...


}

注意:位域长度不能超过该类型的位数。


可以无位域名,表示填充或者调整位置


(1)位段成员的类型必须是指定为unsigned或int类型


(2)若某一位段要从另一个字开始存放。


E.g:unsigned a:1;


     unsigned b:2; 一个存储单元


     unsigned :0;


     unsigned c:3; 另一个存储单元


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值