1. 示例代码
package org.jinyuxin.a20190805;
import java.util.Scanner;
public class IntToBinary {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
intTo32BitBinary(i);
countBinaryOne(i);
}
//将int型整数转成有符号的32位二进制数
public static void intTo32BitBinary(int x) {
StringBuffer sb = new StringBuffer();
for (int i = 0; i < 32; i++) {
sb.append(x & 1);
//无符号右移,高位补0,包括符号位在内一起右移
//>> 是有符号右移。符号位保持不变,负数高位补1,正数高位补0。
x = x >>> 1;
}
//得到32位的二进制字符串
String str32 = sb.reverse().toString();
System.out.println("有符号32位二进制为:"+str32);
}
//统计二进制中1的个数
public static void countBinaryOne(int x) {
int count = 0;
while(x != 0) {
x = x & (x-1);
count++;
}
System.out.println(count);
}
}
2. 示例结果
以上程序和思路参考:
【Java基础】整型转换为二进制字符串(无符号右移) https://blog.csdn.net/liyazhou0215/article/details/77501729
【计算数值二进制表达式中1的个数】 https://blog.csdn.net/itworld123/article/details/88715835