package com.zf.test;
import org.junit.Assert;
import org.junit.Test;
public class HexConversion {
/**
* 十进制 -> 二进制
*/
@Test
public void test01(){
Integer a = 18 ;
/**
* 18 / 2 = 9 余 0
* 9 / 2 = 4 余 1
* 4 / 2 = 2 余 0
* 2 / 2 = 1 余 0
* 1 / 2 = 0 余 1
* 结果:从下往上组合余数得到:1001
*/
Assert.assertEquals("10010", Integer.toBinaryString(a));
}
/**
* 二进制 -> 十进制
*/
@Test
public void test02(){
String b = "10010";
// 0 * 2^0 + 1 * 2^1 + 0 * 2^2 + 0 * 2^3 + 1 * 2^4
// =
// 0 + 2 + 0 + 0 + 16 = 18
Assert.assertEquals( b , Integer.toBinaryString(18));
}
/**
* 八进制 -> 10进制
*/
@Test
public void test03(){
int a = 015 ;
/**
* 5 * 8^0 + 1 * 8^1 + 0 * 8^2
* =
* 5 + 8 = 13
*/
Assert.assertEquals(a, 13);
}
/**
* 十进制 -> 八进制
*/
@Test
public void test04(){
int a = 18 ;
/**
* 18 / 8 = 2 余 2
* 2 / 8 = 0 余 2
* 结果:22(书写形式为 022 ,因为八进制需要以0开头)
*/
Assert.assertEquals(022, a);
}
/**
* 八进制 -> 二进制
*/
@Test
public void test05(){
int a = 023 ;
/**
* 实际上八进制为23(前面的0是格式需要)
* 从后向前 每一位通过十进制转二进制的方式转换为三位二进制数,不够不零
* 3 -转换为二进制-> 011
* 2 -转换为二进制-> 010
* 将结果从下网上书写得到: 010011
* 第一位0可以省略得到10011
*/
Assert.assertEquals("10011", Integer.toBinaryString(a));
}
/**
* 二进制 -> 八进制
*/
@Test
public void test06(){
String b = "10011";
/**
* 将二进制从右向左每3位分成一段,最后不够用0补
* 得到
* 011 010
* 然后将每3位通过十进制转换的方式转换为十进制数
* 3 2
* 然后结果从后向前书写得到 23
* 所以得到结果 023
*/
Assert.assertEquals(b, Integer.toBinaryString(023));
}
/**
* 十六进制 -> 十进制
* 十六进制以0x开头, A、B、C、D、E、F分别表示10、11、12、13、14、15
*/
@Test
public void test07(){
int a = 0x1A ;
/**
* 实际上为 1 10
* = 10 * 16^0 + 1* 16
* = 10 + 16
* = 26 ;
*/
Assert.assertEquals(26 , a);
}
/**
* 十进制 -> 十六进制
*/
@Test
public void test08(){
int a = 26 ;
/**
* 26 / 16 = 1 余 10
* 1 / 16 = 0 余 1
* 结果为 1 10
* = 0x1A
*/
Assert.assertEquals(0x1A, a);
}
/**
* 二进制 -> 十六进制
*/
@Test
public void test10(){
String s = "111011";
/**
* 从右向左每四位为一组分割,不足补0
* 得到
* 1011 0011
* 按照十进制方法 ,转换为十进制
* 11 3
* 然后从后向前排列得到 3 11
* 11对应B
* 所以得到结果 0x3B
*/
Assert.assertEquals(Integer.toBinaryString(0x3B), s);
}
/**
* 十六进制 -> 二进制
*/
@Test
public void test09(){
int a = 0x1A ;
/**
* 将每一位转换为由四位组成的二进制数
* 1 A
* 转换
* 0001 1010
* 结果
* 11010
*/
Assert.assertEquals(Integer.toBinaryString(a), "11010");
}
}
进制转换
最新推荐文章于 2023-03-20 10:26:34 发布