Java代码:
package com.renxia.java;
import java.util.*;
public class HelloWorld {
public static void handle(int[]arr){
for (int i : arr){
String str = Integer.toBinaryString(i);
System.out.println(i+"的二进制为: ");
System.out.println(str);
char[] chars = str.toCharArray();
boolean bool = false;
boolean all_1 = true;//判断是否为全1
for (int j = 1;j<chars.length;j++){
if (chars[j]=='0'){
all_1=false;
}
}
if (all_1){
System.out.println(i);
continue;
}
for (int j = 1;j<chars.length;j++){
if (bool){
chars[j]='1';
}
if (j<chars.length-1&&chars[j]=='1'&&!bool) {
chars[j] = '0';
bool=true;
}
}
int i1 = Integer.parseInt(new String(chars),2);
System.out.println("小于等于"+i+",且二进制位数相同的1最多的二进制是: ");
System.out.println(Integer.toBinaryString(i1));
System.out.println(i1);
System.out.println("-----------------------------------------------");
}
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int m=sc.nextInt();
int[] arr=new int[m];
for(int i=0;i<m;i++){
arr[i]=sc.nextInt();
}
handle(arr);
}
}
运行结果:

本文展示了一个Java程序,该程序接收一组整数输入,并处理每个整数的二进制表示。程序首先将整数转换为二进制字符串,检查是否全为1,如果不是,则进行特定的位操作来找到小于等于原数且具有相同二进制位数的1最多的数。
648

被折叠的 条评论
为什么被折叠?



