美文网首页奇妙的位运算
位运算之奇偶位的互换

位运算之奇偶位的互换

作者: 掌灬纹 | 来源:发表于2019-01-22 19:27 被阅读0次

    题目:

    输入任意十进制数,输出二进制表示形式,

    并将奇数位与邻近偶数位互换并且输出十进制和二进制数。

    样例:

    输入:

    10

    输出:

    1010

    5

    101

    tip:

    输入的十进制数对32位101010......做&运算得a,即可保留原偶数位,奇数位都为0

    同理,原数对010101.....做&运算得b,即可保留原奇数位,偶数位都为0

    a右移一位,b左移一位 在将两数做^运算即可得到所求

    (Java代码如下)

    public static void main(String[] args) {

    Scanner sc = new Scanner(System.in);

    int a = sc.nextInt();

    System.out.println(Integer.toString(a,2));

    int b = m(a);

    System.out.println(b);

    System.out.println(Integer.toString(b,2));

    }

    public static int m(int i) {

    int ou = i&0xaaaaaaaa;//101010....16进制表示(32位二进制太多简化为16进制)

    int ji = i&0x55555555;//010101....

    return (ou>>1)^(ji<<1);

    }

    相关文章

      网友评论

        本文标题:位运算之奇偶位的互换

        本文链接:https://www.haomeiwen.com/subject/zyurjqtx.html