[java] 获取一个数二进制序列中所有的偶数位和奇数位, 分别输出二进制序列

本文介绍了解决编程问题的两个关键点:一是调整二进制数列遍历顺序,从高位到低位获取正序;二是通过拆分循环分别打印奇数列和偶数列。博主详细分享了这两个技巧并给出了实现代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题解析

这道题一共两个难点:

  • 如何让数列能够按从高位到低位正序排列?
    在上篇笔记中,我从输入数的二进制序列第 1 位一直遍历到第 32 位,若这道题也使用这个顺序,得到的会是逆序的奇数列和偶数列。因此我们换个方向进行遍历即可,从二进制序列的第 32 位遍历到第 1 位,得到即为正序数列。

  • 如何同时打印奇数列和偶数列?
    在这个问题上我耗费了不会时间,一直试图在一个循环里把奇数列和偶数列都排列出来。后来发现,只要拆解成两个循环,这个问题就很好解决,不必太钻牛角尖。

解题思路

创建 n 变量储存输入数,然后由两个循环分别由高位到低位遍历输入数的二进制序列。奇数列从 n >> 31 一直遍历到 n >> 1 并将每一位都输出,需要注意 println 是带换行符的输出,为了让数列保持在同一行,要换用 print 来输出,循环结束后再加一个换行语句,开启下一条偶数列循环。偶数列由 n >> 30 遍历到 n >> 0 并将每一位都输出,就能得到偶数列。

实现代码
public static void main(String[] args) {
    System.out.println("请输入一个整数: ");
    Scanner scan = new Scanner(System.in);
    int n = scan.nextInt();

    //打印奇数
    System.out.println("奇数是:");
    for(int i = 31; i >= 1; i -= 2){
        System.out.print(((n>>i)&1) + " ");
    }
    System.out.println();

    //打印偶数
    System.out.println("偶数是:");
    for(int i = 30; i >= 0; i -= 2){
        System.out.print(((n>>i)&1) + " ");
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值