import java.util.Random; public class 唯一成对数{ public static void main(String[] args) { int N = 5; int[] a=new int[N]; for (int i = 0; i2,判断一个整数是不是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条)