偶数大翻转

39 篇文章 0 订阅
23 篇文章 1 订阅

问题描述:
输入n个数,请将其中的偶数的二进制反转。
eg:输入1 6 5
其中6是偶数,二进制表示为110,反转后为011,代表3,所以最终输出1 3 5.
结题思路:

思路就是先将输入数字中的偶数解析出来,然后再转String,记下当前二进制位数,然后反序右移32-len。

import java.util.Scanner;
public class Main{
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("输入数组:");
        int n=scanner.nextInt();
        int arr[]=new int[n];  //将输入存入数组
        while(scanner.hasNext()) {  //是否还有下一个输入项
            for(int i = 0; i < arr.length; i++){
                arr[i] = scanner.nextInt(); //获取下一个输入项
                if(arr[i] %2 == 0) {
                    System.out.println("提取出偶数进行二进制翻转重新存入数组并且打印:");
                   int len=String.valueOf(Integer.toBinaryString(arr[i])).length();
                    //toBinaryString将整数转换为无符号数;valueOf返回参数的字符串表示形式;
                    //length返回字符串的长度;System.out.println(len)--输出是3;
                    String b = String.valueOf(Integer.toBinaryString(arr[i]));//System.out.println(b),输出是110;
                    arr[i] =(Integer.reverse(arr[i]))>>(32-len);  //>>右移运算符
                    //reverse方法返回通过比特的反转顺序,指定int值的二进制补码表示法得到的值。
                    System.out.println(arr[i]+"\t");
                }
            }
        }
        scanner.close();
    }
}
//输入数组:
//1 6 5
//提取出偶数进行二进制翻转重新存入数组并且打印:
//3 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

马超的博客

谢谢大佬的赞赏 :)

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值