C++基础学习(03AM)
2015-05-31 11:42
281 查看
1.‘\0’、NULL、0和false为假,其余都为真
2.a<<3:表示a左移3位,相当于运算数*2的3次方(只要没有溢出)。
>> 右边丢失,无符号左边补0 有符号非负补0负数补1
例如:-1>>5还是-1 -1和0右移是没有任何意义的,还是 原数
64>>2 变成16
右移动n位数=原数除以2的n次方
右移的位数超过总的位数则没有意义
3.两次异或之后数据还原
a=10,b=20;a=a^b;b=a^b;a=a^b;则a=20 b=10
4.相关代码
#include <iostream>
using namespace std;
int main()
{
cout << ~-1 << endl;
cout << ~0 << endl;
int var = -1;
cout << ~var << endl;
cout << var << endl;
int v1=10;
int v2=20;
cout << v1++ << endl;
cout << v2-- << endl;
cout << v1 << endl;
cout << v2 << endl;
cout << endl;
int a=10,b=20;
a=a^b;
b=a^b;
a=a^b;
cout << a << endl;
cout << b << endl;
//三次异或,交换两数 异或两数相反才为1 或运算,只要有1则为1 即或运算等于加运算(如果没有1重复的话)
//按位与运算作用测试位数是否为1,1跟谁与得谁
return 0;
}
2.a<<3:表示a左移3位,相当于运算数*2的3次方(只要没有溢出)。
>> 右边丢失,无符号左边补0 有符号非负补0负数补1
例如:-1>>5还是-1 -1和0右移是没有任何意义的,还是 原数
64>>2 变成16
右移动n位数=原数除以2的n次方
右移的位数超过总的位数则没有意义
3.两次异或之后数据还原
a=10,b=20;a=a^b;b=a^b;a=a^b;则a=20 b=10
4.相关代码
#include <iostream>
using namespace std;
int main()
{
cout << ~-1 << endl;
cout << ~0 << endl;
int var = -1;
cout << ~var << endl;
cout << var << endl;
int v1=10;
int v2=20;
cout << v1++ << endl;
cout << v2-- << endl;
cout << v1 << endl;
cout << v2 << endl;
cout << endl;
int a=10,b=20;
a=a^b;
b=a^b;
a=a^b;
cout << a << endl;
cout << b << endl;
//三次异或,交换两数 异或两数相反才为1 或运算,只要有1则为1 即或运算等于加运算(如果没有1重复的话)
//按位与运算作用测试位数是否为1,1跟谁与得谁
return 0;
}
相关文章推荐
- C++11 新特性整理
- 对学弟学妹学习C++的建议
- c++ ANSI、UNICODE、UTF8互转
- C/C++符号优先级和左/右结合性
- C/C++符号优先级和左/右结合性
- 【C语言】整人小程序
- VS2010 C++ MFC框架学习笔记3 - 控件Tab顺序设置及模态对话框
- C++ TinyXml操作
- 给定两个整数,比较出其中大者
- c++基础学习(02PM)
- C语言的数组初始化
- C语言fopen用法
- C++ 的 RTTI
- 标准C++中的string类的用法总结
- 基于DirectX的半球形天空类的C++和C#实现
- C++——类实例化内存的分配和this指针的使用
- DLL的双向头文件
- 由一题讨论C语言中的“指针数组作main函数的形参”即 main(int argc,char *argv[])的使用
- C语言产生随机数
- Unix C语言编程示例