
import java.util.Random;
public class 唯一成对数{
public static void main(String[] args) {
int N = 5;
int[] a=new int[N];
for (int i = 0; i
2,判断一个整数是不是2的整数次方
import java.util.Scanner;
public class is2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n=sc.nextInt();
System.out.println(Integer.toString(n,2));
if(((n-1)&n)==0){
//2的整数次方的整数的二进制都只有一个1,其它位均为0.所以(n-1)&n)==0
//4的二进制是100,减1之后为011.两者相与为0.
System.out.println("yes");
}else{
System.out.println("no");
}
}
}
3,请实现一个函数,输入一个整数,输出该数二二进制表示中1的个数。➢例: 9的二进制表示为1001,有2位是1。
import java.util.Scanner;
public class 二进制中1的个数 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
System.out.println(Integer.toString(n,2));
int count=0;
//法一
while (n!=0) {
n=(n-1)&n;
count++;
}
System.out.println(count);
//法二
for (int i = 0; i <32 ; i++) {
if ((n&(1<>>i)&1)==1){
count++;
}
}
System.out.println(count);
}
}
4,将整数的奇偶位互换
import java.util.Scanner;
public class 奇偶互换 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int a = n&0xaaaaaaaa;
//和1010 1010 1010 .....做与运算取出偶数位
int b = n&0x55555555;
//和0101 0101 0101 .....做与运算取出奇数位
int c = (a>>1)^(b<<1);
//将a右移一位,b向左一位。然后两者通过异或连接。
System.out.println(c);
}
}
5,给定一个介于0和1之间的实数(如0.625) ,类型为double, 打印它的二进制表示(0.101, 因为小数点后的二进制分别表示0.5,0.25.0.12.....) 如果该数字无法精确地用32位以内的二进制表示,则打印"ERROR"
import java.util.Scanner;
public class 二进制表示浮点实数 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double n =sc.nextDouble();
StringBuilder a = new StringBuilder("0.");
//StringBuilder类也代表可变字符串对象。
while (n>0) {
double b=n*2;
if (b>=1) {
a.append("1");
n=b-1;
}else {
a.append("0");
n=b;
}
if (a.length()>34) {
System.out.println("ERROR");
return;
}
}
System.out.println(a);
}
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)