`
v5browser
  • 浏览: 1138267 次
社区版块
存档分类
最新评论

位运算的知识总结

 
阅读更多

1、位运算


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


位逻辑运算:


按位与:&


按位或:|


按位异或:^


按位取反:~


(2)位移运算:


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


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


(3)运算规则:


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


|:1|0=10|1=10|0=01|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语言中允许在一个结果体中以单位来指定其成员所占内存长度,这种以位为单位的成员称为“为段”或“位域”(bitfield)


struct位域结构名{


...


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


...


}

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


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


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


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


E.g:unsigneda:1;


unsignedb:2;一个存储单元


unsigned:0;


unsignedc:3;另一个存储单元


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics