java进制转换
二进制在计算机中的表示
- 一个N位的二进制数由1位符号位和N-1位数据位组成,正数符号位为0,负数符号位为1
- 二进制数在计算机中是以补码的形势存在的,补码的定义为:
- 对于正数,补码与原码相同
- 对于负数,符号位不变,数据位取反,再加一
举例(32位正数为例):
- 20
- 原码:0000 0000 0000 0000 0000 0000 0001 0100
- 反码:0000 0000 0000 0000 0000 0000 0001 0100
- 补码:0000 0000 0000 0000 0000 0000 0001 0100
- -20
- 原码:1000 0000 0000 0000 0000 0000 0001 0100
- 反码:1111 1111 1111 1111 1111 1111 1110 1011
- 补码:1111 1111 1111 1111 1111 1111 1110 1100
进制转换方法
- 十进制转换为其他进制
public class Main {
public static void main(String[] args) throws Exception {
//转换为二进制(输出补码,省略0)
System.out.println(Integer.toBinaryString(2333));
//转换为16进制
System.out.println(Integer.toHexString(2333));
//转换为八进制
System.out.println(Integer.toOctalString(2333));
}
}
结果:
- 其他进制转换为十进制
在Java代码中,默认的整数进制就是十进制,就算你定义了一个其他进制的数,在输出或者运算时都是按照十进制来的,不需要刻意转换:
public class Main {
public static void main(String[] args) throws Exception {
int int16=0xfff;
int int2=0b1001;
System.out.println(int2);
System.out.println(int16);
}
}
当然,对于没有标识的整形,java中也保留了转换进制的方法:
public class Main {
public static void main(String[] args) {
System.out.println(Integer.parseInt("1001", 2));//2进制转换成十进制
System.out.println(Integer.parseInt("1001", 8));//8进制转换为十进制
System.out.println(Integer.parseInt("1001", 16));//16进制转换为十进制
}
}
结果为:
更多推荐
二进制在计算机中的表示,以及java进制转换的方法
发布评论