目录
调用API实现进制转换(基本可以解决大部分的进制转换)
十进制转n进制
public static String Conversion(int number, int n) {//number表示数,n表示要转换的进制,返回字符串类型
return Integer.toString(number, n);
}
n进制转十进制
public static int Conversion(String number, int n) {//number表示n进制数字的字符串,转换成十进制
return Integer.parseInt(number, 2);
}
位运算
练习题目:二进制中1的个数
java题解
import java.util.Scanner;
public class Main {
public static void main(String args[]) {
Scanner input = new Scanner(System.in);
int n = input.nextInt();// n个数
for (int i = 0; i < n; i++) {
int result = 0;
int number = input.nextInt();
while (number != 0) {
if ((number & 1) == 1)// 末尾和1取与,同1则1,不同为0
result++;
number = number >> 1;
}
System.out.print(result + " ");
}
}
}
练习题目:只出现一次的数字
java题解
class Solution {
public int singleNumber(int[] nums) {
// 位运算
// 异或解法:异或运算满足交换律,a^b^a=a^a^b=b
// 因此ans相当于nums[0]^nums[1]^nums[2]^nums[3]^nums[4].....
// 然后再根据交换律把相等的合并到一块儿进行异或(结果为0),然后再与只出现过一次的元素进行异或
// 这样最后的结果就是,只出现过一次的元素(0^任意值=任意值)
int a = 0;
int n = nums.length;
for (int i = 0; i < n; i++) {
a = a ^ nums[i];
}
return a;
}
}
常用操作
获取某个数二进制当中第K位的数字
public static int GetKnumber(int number, int k) {
return number >> (k - 1) & 1;
}
返回某个数最后一位1的大小
public static int GetLastOne(int number) {
return number & -number;
// 12 二进制---> 1100
// 12&-12 二进制---> 100 十进制----> 8
}