码迷,mamicode.com
首页 > 编程语言 > 详细

C语言位运算符

时间:2015-10-09 16:51:48      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:

参考:http://www.94cto.com/index/Article/content/id/4.html
假设以整数八位bit存储。
1.符号:& | ^ ~ << >>
2. 逻辑规则和算术规则:& | ^ ~都是8位全部变的
注意:位运算适用于整数,整数在内存中以补码形式存储。包括符号位和数值位,符号位0正1负。
3. << >>要考虑到符号位,正数都是一样的(右移左边补0),负数的话,看编译器去,右移时:左边补0补1看编译器,gcc是补1。
---------------------------
例子: 在逻辑学里:0假1真
1. &
二真为真,否则为假
2. |
一真为真,否则为假
3. ^
两个二进制位值相同则为0,否则为1

#include <stdio.h>
main()
{
int a=071;
int b = 052;
printf("%o\n",a^b); //23
}
 00111001
^00101010
----------
 00010011


4. ~
所有位取反
5. << >>
以右移为例:
正数:左边补0
负数:左边补1

#include <stdio.h>
main()
{
/*
a=-7
y:10000111
f:11111000
b:11111001 //~a:00000110 6
>>1
  11111100 //-:1,bu 1; 0:+,bu 0
b:11111100
f:11111011
y:10000100
-4
*/
int a=-7;
printf("%d \n%d\n",~a,a>>1); // 6 -4
}

 

 

C语言位运算符

标签:

原文地址:http://www.cnblogs.com/htmlphp/p/4864331.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!