第二十五章补充内容 16 位运算 简单

// 第二十五章补充内容 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;
}*/

  

原文地址:https://www.cnblogs.com/xiangxiaodong/p/2725105.html