第二十五章补充内容 16 位运算
2012-10-15 21:56
190 查看
// 第二十五章补充内容 16 位运算 //位运算直接对二进制位进行的运算,C++提供了可以对位进行操作的位运算符 // & 按位与(AND) // | 按位或(OR) // ^ 按位异或(XOR) // ~ 按位非(NOT)(取反) // >> 右移动运符 // >> 左移动运算符 //16.1 按位与"&"运算符 //补码的设计目的如下 //1 统一正零和负零 //2 使减法运算转换为加法运算 //3 使负数在计算时与正数一样正确 //订算机储存有符号整数时,是用该整数的补码进行储存,0的原码,返码,补码都是0,正数的原码,反码和补码可以简单的理解为相同,而负数的补码是它的反码加1 //"&"运算符有下列几个特殊的用途 //1 将所有二进制位清零 //2 取指定位 //16.2 按位或"|"运算符 //16.3 异或"^"运算符 //异或运算要求有两个运算值,然后返回一个值,只要两个运算值中的二进制同号,那么结果为0,异号,那么为真 //异或"^"运算符的用途如下所示 //(1)使特定或者全部位反转 //(2)不用临时变量就可以变换两个值 /*#include <iostream> using namespace std; int main() { int i=2,j=3; cout<<"开始的值为i:"<<i<<", j:"<<j<<endl; i = i ^ j; j = j ^ i; i = i ^ j; cout<<"交换后的值为i:"<<i<<", j:"<<j<<endl; return 0; }*/ //与0相^,值不变 //16.4 取返"~"运算符 //注意: ~运算符的优化级别比其他位运算符,算术运算符,关系运算符以及逻辑运算符都高 //16.5 左移运算符“<<” //16.6 右移运算符“>>” //16.7 复合位运算符 //<<= 复合按位左移赋值运算符 //>>= 复合按位右移赋值运算符 //&= 复合按位与赋值运算符 //^= 复合按位异合运算符 //|= 复合按位或赋值运算符 //16.8 不同长度数字的位运算 //16.9 位运算的实例 /*#include <iostream> using namespace std; int main() { int a, b, i; cout<<"请输入一个整数:"; cin>>a; b = 1<<15; //构造一个最高位为1,其余各位为0的整数 cout<<a<<"的二进制形式为:"<<endl; for(i=0; i<=16; i++) { cout<<(a&b?'1':'0'); //输出最高位的值(1或者0),也就是负数还是正数 a<<=1;//将次高位移动到最高位上 if(i%4==0) cout<<" "; //4位一组用空格分开 } cout<<endl<<"结束"<<endl; return 0; }*/
相关文章推荐
- 第二十五章补充内容 17位字段
- 第二十五章补充内容 18区域差异
- 第二十五章补充内容 3 assert()宏
- Java学习笔记16(面向对象九:补充内容)
- 第二十五章补充内容 4 尝试编写一个简单的assert()宏
- 第二十五章补充内容 5 不能为0的变量
- 第二十五章补充内容 6 用宏函数来输出表达式的值
- 第二十五章补充内容 7 调试的级别
- 第二十五章补充内容 8 C++类型转换及运行时类型信息(RTII)
- 第二十五章补充内容 9 关键字volatile
- 第二十五章补充内容 10 关键字const
- 第二十五章补充内容 11 关键字mutable
- 第二十五章补充内容 12联合数据类型union
- 第二十五章补充内容 13联合数据类型的内存占用
- 第二十五章补充内容 1 预处理过程
- 第二十五章补充内容 14匿名联合体
- 第二十五章补充内容 2 预定义的宏
- 第二十五章补充内容 15再谈指针
- 【一天一个shell命令】文本内容操作系列-sed补充
- 对上次内容的补充:通过例题了解静态成员的使用