C语言位运算
2016-06-14 11:41
309 查看
按位左移:<< 左移
原值 1101 左移2位后为110100
2^5+2^4+2^2
32+16+4=52
按位与 同为1 则为1,否则为0
按位或 有1则为1,否则为0
按位亦或 相同为0,不同位1
按位取反 一元运算符
int c = 2;//0010
int d = 10;//1010
//按位与 同为1 则为1,否则为0
0010
1010
0010
//按位或 有1则为1,否则为0
0010
1010
1010
//按位亦或 不同位1 否则为0
0010
1010
1000
//按位取反
00001010
11110101 补码
11110100 反码
10001011 补码
//运算符优先级
算术>关系>逻辑
括号优先级最高!!!
数据类型转换:
自动数据类型转换
int+double=double
char->short->int->long->float->double->->->->
强制类型转换,在前面加(类型)。
int m=100,p=0;
char n = 50;
p=m+(int)n;
表达式
+=、 -=、*=、/=、%=、>>=、<<=、&=、|=、^=
a += b; a = a + b;
原值 1101 左移2位后为110100
2^5+2^4+2^2
32+16+4=52
按位与 同为1 则为1,否则为0
按位或 有1则为1,否则为0
按位亦或 相同为0,不同位1
按位取反 一元运算符
int c = 2;//0010
int d = 10;//1010
//按位与 同为1 则为1,否则为0
0010
1010
0010
//按位或 有1则为1,否则为0
0010
1010
1010
//按位亦或 不同位1 否则为0
0010
1010
1000
//按位取反
00001010
11110101 补码
11110100 反码
10001011 补码
//运算符优先级
算术>关系>逻辑
括号优先级最高!!!
数据类型转换:
自动数据类型转换
int+double=double
char->short->int->long->float->double->->->->
强制类型转换,在前面加(类型)。
int m=100,p=0;
char n = 50;
p=m+(int)n;
表达式
+=、 -=、*=、/=、%=、>>=、<<=、&=、|=、^=
a += b; a = a + b;
相关文章推荐
- C语言for循环、while循环(含math.h)
- C语言基本类型
- 二叉查找树的查找、插入、删除、释放等基本操作的实现(C语言)
- vc 获取U盘盘符
- C++面试题: i++和++i的区别
- C语言中二维字符数组的定义和初始化
- 第一节作业 飞机游戏体会 150206118
- C++ Primer学习笔记(二)
- 35. Search Insert Position
- C++中的new与delete
- C++中的运算符重载
- C++面试题: C++域操作符
- c++封装编写线程池
- 游戏光枪坐标定位原理及算法
- 第12周 《C语言及程序设计》实践项目——if语句的嵌套
- 使用C/C++编写函数,实现字符串反转,要求不使用任何系统函数,且时间复杂度最小
- 计算器——C++实现
- C++ 字符数组
- 从string类的实现看C++类的四大函数(面试常见)
- 第12周 《C语言及程序设计》实践项目——用if语句实现分支结构