两个int值,如a=2,b=3
创建另一个int引用,如int position.现在要将position的前16位表示为a的值,后16位表示为b的值,如何运算?
且要求此操作可逆。即可以通过一些计算从position得到a=2,b=3。
工作两年一直用SSH,这些忘光了,请各位指教

解决方案 »

  1.   

    int a=2,b=3;
    int p = a;

    b <<= 16;
    p |= b;
      

  2.   

    int a=2,b=3;
    System.out.println(Integer.toBinaryString(a));
    System.out.println(Integer.toBinaryString(b));
    int p = a;
    p &= 0xffff;//前16位清空
    b <<= 16;
    p |= b;
    System.out.println(Integer.toBinaryString(p));
      

  3.   


    int a = 2,b = 3;
    int position = 0;
    position = (position^a)<<16;
    position = position^b;
    a = position >>>16;
    b = ((position >>>16)<<16)^position;