如何在java中使用其他基数?

伙计们,如果int c = 10001; 这是一个二进制值。如果我想处理它就像乘以10怎么做?

如果我理解你正确你想要这样做: Integer.parseInt("10001", 2) ,它将给你17。
Integer.toString也接受radix作为第二个参数。

Doc: Integer.parseInt(String s,int radix)

“int”既不是二进制,hex或十进制,它只是一个存储数字的地方。 在您打印变量之前,变量本身没有特定的hex/十进制/二进制表示。

当您在代码中键入数字时,它有一个基数,但在使用基数来处理您键入的内容后,基数将被丢弃,而int只存储一个数字。

所以你的问题的答案是c * 10(假设你的意思是10月12日)

您可以将其指定为int c = 0x11 (考虑10001是0001 0001,hex为11)

 public static void main(String[] args) throws Exception { int c = 0x11; // 10001 int d = 10; // ten decimal int d = 0x2; // ten binary 0010 - see table below System.out.println(c); System.out.println(c*d); System.out.println(c*e); } 

二进制十进制转换

  • 0 0000
  • 1 0001
  • 2 0010
  • 3 0011
  • 4 0100
  • 5 0101
  • 6 0110
  • 7 0111
  • 8 1000
  • 9 1001
  • 一个1010
  • B 1011
  • C 1100
  • D 1101
  • E 1110
  • F 1111

治疗

 int c = 10001; 

作为二进制数字真的很奇怪。 最好将它声明为String

 String binaryString = "10001"; 

然后循环遍历每个字符以执行您想要的任何基本转换算法。

二进制与整数的乘法:

  • 如果它是2的幂,那么只需将所有数字左移到左边的指数值
  • 如果它不是2的幂,则找到两个小的最大幂,然后是你想要乘以你的c的值。 对其余部分做同样的事情等等。 最后只是总结所有的价值观。

对于c = 10001(基数2)* 10(基数10)的例子,这意味着(10 = 2 ^ 3 + 2 ^ 1)

 int c=10001 int result=c*1000+c*10 //left-shift 3 + left-shift 1 

但这并不是处理这类任务的好方法……而且它认为将二进制值保存到int中是个坏主意。 我认为在使用它之前将二进制转换为整数会更好。