zoukankan      html  css  js  c++  java
  • c/c++运算符

    1.算术运算符(+  -  /  *  %)

    2.移位运算符

    移运算符:操作数必须是整形,>>,逻辑左移左边移入的位用0填充,算数左移左边移入的的位用符号位补齐。(无符号数为逻辑左移,对于有符号数取决于编辑器)

                                           <<,值左边的几位被丢弃,右边的多出来的几个空位用0补齐。

    例:返回参数中1的个数

    int SumOfOne(int num)
    {
    	int count = 0;
             for (int i = 0; i < 32; i++)
    	{
    if (num &1) count++; num >>= 1; } return count; }

     3、位操作符(&  |  ^)

    将指定位(bit_number)置1

    value=value|1<<bit_number;

    将指定位(bit_number)置1

    value=value&~(1<<bit_number)

    4、赋值,复合赋值运算符(=,+=,-=,*=,%=,......)

    5、单目运算符(只接受一个操作数)(!,++,-,&,sizeof,~,--,*,(类型))

    6、关系运算符(>,>=,<,<=,!=,==)

    7、逻辑运算符(&&,||)

    a>5&&a<10 (&&的优先级比>和<的优先级低所以组合方式为(a>5)&&(a<10 )但尽管&&的优先级较低但它还会对两个表达式加以控制只有左操作数为真时才对右操作数进行操作)

    操作符的一些应用:

    判断一个数是不是2的n次方

    bool IsPowOfTwo(int num)
    {
        if (!(num&num - 1))
            return 1;
        return 0;
    }

    定义宏实现将一个int型的数的奇偶位互换

    #define M(n) (((n>>1)0x55555555)|(n<<1)&0xaaaaaaaa)

    将一个二进制序列逆序

    int Reverse(int num)
    {
        int ret = 0;
        for (int i = 0; i < 32; i++)
        {
            ret <<= 1;
            ret|= (num >> i) & 1;
        }
        return ret;
    }

    找出一组数中唯一的出现一次的数

    int FindOneCount(int *a, int size)
    {
        int xor = 0;
        for (int i = 0; i < size; i++)
        {
            xor = xor^a[i];
        }
        return xor;
    
    }

    找出只出现一次的两个数,其他的都是成对出现的

    void FindTwoCount(int *a, int size,int *p1,int *p2)
    {
        int tmp = 0;
        int xor = 0;
        int pos = 0;
        for (int i = 0; i < size; i++)
        {
            xor ^= a[i];
        }
        tmp = xor;
        while (xor)//找出不同的一位
        {
            if ((xor & 1) == 1)
                break;
            pos++;
            xor >>= 1;
        }
        for (int i = 0; i < size; i++)
        {
            if ((a[i] >> pos) & 1)
            {
                (*p1)^= a[i];
    
            }
            xor = tmp;
            *p2 = xor ^ (*p1);
            
        }
         printf("%d	%d
    ", *p1, *p2);
    }

                 

  • 相关阅读:
    javascript的window.open()具体解释
    Async.js解决Node.js操作MySQL的回调大坑
    入门--JTBC系统学习(1)
    Hadoop1.2.1 全然分布式集群搭建实操笔记
    Hessian原理与程序设计
    pycharm最新注册方法 pycharm最新激活方法 2016pycharm最新注册方法
    如何修改linux时间? 校正linux系统的时间
    python 内建函数 type() 和 isinstance() 介绍
    标准类型内建函数 str()和 repr() (及 `` 运算符) 简单介绍
    标准类型内建函数 cmp()介绍
  • 原文地址:https://www.cnblogs.com/Blog-day/p/My_Blog_Days_20.html
Copyright © 2011-2022 走看看