zoukankan      html  css  js  c++  java
  • 第二十五章补充内容 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;
    }*/
    

      

  • 相关阅读:
    函数的四种调用模式.上下文调用.call.apply
    caller.arguments.callee.eval
    面向对象相关知识总结
    javascript与jQuery的each,map回调函数参数顺序问题
    HTML5自定义属性的设置与获取
    [bzoj1911][Apio2010]特别行动队
    [学习笔记]乘法逆元
    [日常训练]普通计算姬
    [学习笔记]线性筛
    [学习笔记]数论(一)
  • 原文地址:https://www.cnblogs.com/xiangxiaodong/p/2725105.html
Copyright © 2011-2022 走看看