zoukankan      html  css  js  c++  java
  • 值得谨记

    代码
     1 int[] arrInt32 = new int[] { 418880735788285634 }; 
     2             for (int x = 0; x < 9; x++)
     3             {
     4 
     5                 for (int y = 0; y < 9 - 1; y++)
     6                 { 
     7                     if (arrInt32[y] > arrInt32[y + 1])
     8                     { 
     9                         arrInt32[y] ^= arrInt32[y + 1]; 
    10                         arrInt32[y + 1^= arrInt32[y]; 
    11                         arrInt32[y] ^= arrInt32[y + 1];
    12                     }
    13 
    14                 }
    15 
    16             } 
    17             for (int i = 9; i > 0; i--)
    18             {
    19 
    20                 Console.Write("{0}/", arrInt32[i - 1]);
    21 
    22             }


    上面的代码初看没理解有什么特殊的,

    还以为

     arrInt32[y + 1] ^= arrInt32[y];
     arrInt32[y] ^= arrInt32[y + 1]; 

    是多余的。

    后来查了下逻辑异或,找到了答案。

    ------很佩服这样简单高效代码-----------

     x^=y; y^=x; x^=y;

    可以实现不用临时空间就交换两个整数x,y
    -------------------------------------------

    两个数(例如x和y)相同(两者都为真或两者都为假)时,
    逻辑异或后即为假(通常用0表示),不同(一方为真,一方为假)时,逻辑异或后即为真(通常用1表示)
    x y 逻辑异或
    0 0 0
    0 1 1
    1 0 1
    1 1 0
     

    很惭愧


  • 相关阅读:
    SQL Server 2005 数据定义语言触发器(Data Definition Language Triggers)[翻译]
    sqlserver 存储过程例子
    微软CEO鲍尔默:科技产业终将成为经济救世主
    poj:2689用筛选法选素数求区间[L,U]的所有素数
    ZOJ Problem Set 1002 Fire Net
    去除多余括号
    模板元编程:求N的阶乘
    算法导论10.2习题
    奇数阶魔方算法
    TSQL 编程常用例子
  • 原文地址:https://www.cnblogs.com/wyxy2005/p/1750835.html
Copyright © 2011-2022 走看看