嵌入式-linux-位运算详解

嵌入式-linux-位运算详解

ID:9007209

大小:130.00 KB

页数:5页

时间:2018-04-14

嵌入式-linux-位运算详解_第1页
嵌入式-linux-位运算详解_第2页
嵌入式-linux-位运算详解_第3页
嵌入式-linux-位运算详解_第4页
嵌入式-linux-位运算详解_第5页
资源描述:

《嵌入式-linux-位运算详解》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、嵌入式-Linux-位运算详解1、常用位操作符图2-11.1、位与(&)位与就是对数的二进制位位进行运算。两个数每个二进制位的运算规则按照如下规则运算,该规则就是其真值表(如下)。&01000101从其运算规则(真值表)可以看出只有1和1进行与运算的结果是1,其余的全是0,如果我们将1当做为真,0当做假的话,按照与运算的要求,两个为真才为真,只要有一个为假就为假。好了,我们看下面一个例子:3&5=?(1)分析可知这两个是十进制数,所以先把这两个数都化为二进制数:3的二进制:0b00115的二进制:0b0101(2)将这两个数的二进制形式按照上面的运算规

2、则进行按位与运算:0b0011(3)&0b0101(5)=0b0001(1)(3)将得到的二进制结果0b0001变为十进制,十进制结果为1。所以可以得出结论:3&5=1。扩展:&(按位与)和&&(逻辑与)的区别&&(逻辑与)是将要运算的两个数都看做成一个整体,而这个整体如果是0,则该数被定义成逻辑假(0),如果该数不为0(不管是正的还是负的)则被定义成逻辑真(1)。来看几个小例子:(1)3&&5=?分析:3(逻辑真)5(逻辑真),真&&真=真,所以结果为真,即:3&&5=1(2)3&&0=?分析:3(逻辑真)0(逻辑假),真&&假=假,所以结果为假,即

3、:3&&0=0(3)3&&-5=?分析:3(逻辑真)-5(逻辑真),真&&真=真,所以结果为真,即:3&&-5=11.2、位或(

4、)对两个两个数的二进制位进行或运算。其真值表如下。

5、01001111从其真值表可以看出只有0和0进行或运算的结果是0,其余的全是1,如果1为真,0为假,或运算就是,只要有一个为真就为真,两个为假才为假。比如下面这个例子:3

6、5=?第一步:将十进制化为二进制:3化为二进制:0b00115化为二进制:0b0101第二步:对这两个数的二进制形式按照上面的运算规则进行按位或运算:0b0011(3)

7、0b0101(5)=0b0111(

8、7)第三步:将二进制结果0b0111转为十进制,十进制结果为7所以可以得出结论:3

9、5=7。第四步:扩展:

10、(按位或)和

11、

12、(逻辑或)的区别

13、

14、(逻辑或)是将要运算的两个数都看做成一个整体,而这个整体如果是0,则该数被定义成逻辑假(0),如果该数不为0(不管是正的还是负的)则被定义成逻辑真(1)。来看几个小例子:3

15、

16、5=?分析:3(逻辑真)5(逻辑真),真

17、

18、真=真,所以结果为真,即:3

19、

20、5=13

21、

22、0=?分析:0(逻辑真)0(逻辑假),假

23、

24、假=假,所以结果为假,即:0

25、

26、0=03

27、

28、-5=?分析:3(逻辑真)-5(逻辑真),真

29、

30、真=真,所以结

31、果为真,即:3

32、

33、-5=11.3、位取反(~)位取反就是将操作数的二进制位逐个按位取反(1变成0,0变成1),其真值表如下。~0=1~1=0从上真值表不难发现规律,取反后,1变0,0变1。比如下面这个例子:~10=?第一步:将十进制化为二进制10化为二进制:0b1010第二步:对操作数的二进制形式按位取反~0b1010(10)0b0101(5)第三步:将二进制结果0b0101转为十进制,结果为5所以可以得出结论:~10=5。扩展:~(按位取反)和!(非)的区别!(非)是将操作数看成一个整体,而这个整体如果是0,则该数被定义成逻辑假(0),如果该数不为0

34、(不管是正的还是负的)则被定义成逻辑真(1)。来看几个小例子:!10=?分析:10(逻辑真)非真就是假,所以结果为假,即:!10=0!0=?分析:0(逻辑假)非假就是真,所以结果为真,即:!0=1!(-10)=?分析:-10(逻辑真)非真就是假,所以结果为假,即:!(-10)=01.4、位异或(^)位异或就是将两个数的二进制位进行位异或运算。位运算的真值表(如下)。^01001110从其运算规则(真值表)可以看出2个位如果相等结果为0,不等结果为1。比如下面的例子:3^5=?第一步:将十进制化为二进制:3化为二进制:0b00115化为二进制:0b010

35、1第二步:将这两个数的二进制形式按照上面的运算规则进行按位与运算:0b0011(3)^0b0101(5)=0b0110(6)第三步:将二进制结果0b0110转为十进制,十进制结果为6:0b0110化为十进制:6所以可以得出结论:3^5=6。1.5、左移位(<<)左移位就是将一个操作数的各二进制位全部左移若干位,左边的二进制位丢弃,右边的二进制位补零。话不多说,来看个例子5<<2=?第一步:将十进制化为二进制:5化为二进制:0b00000101第二步:对操作数0b00000101开始进行左移位2次:0b00000101(5)第一次左移位0b0000101

36、0(10)=5*2第二次左移位0b00010100(20)=10*2第二步:将二进制结果0b0

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。