进制转换

来源:互联网 发布:答题器制作软件 编辑:程序博客网 时间:2024/05/24 00:00
package com.zf.test;import org.junit.Assert;import org.junit.Test;public class HexConversion {/** * 十进制 -> 二进制 */@Testpublic 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));}/** * 二进制  -> 十进制 */@Testpublic 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  = 18Assert.assertEquals( b , Integer.toBinaryString(18));}/** * 八进制 -> 10进制 */@Testpublic void test03(){int a = 015 ;/** * 5 * 8^0 + 1 * 8^1 + 0 * 8^2  * = * 5 + 8 = 13 */   Assert.assertEquals(a, 13);}/** * 十进制 -> 八进制 */@Testpublic void test04(){int a = 18 ;/** * 18 / 8 = 2 余 2 * 2  / 8 = 0 余 2 * 结果:22(书写形式为 022 ,因为八进制需要以0开头) */Assert.assertEquals(022, a);}/** * 八进制  -> 二进制 */@Testpublic void test05(){int a = 023 ;/** * 实际上八进制为23(前面的0是格式需要) * 从后向前 每一位通过十进制转二进制的方式转换为三位二进制数,不够不零 * 3  -转换为二进制-> 011  * 2  -转换为二进制-> 010 * 将结果从下网上书写得到: 010011 * 第一位0可以省略得到10011 */Assert.assertEquals("10011", Integer.toBinaryString(a));}       /** * 二进制 -> 八进制 */@Testpublic 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 */@Testpublic void test07(){int a = 0x1A ;/** * 实际上为 1 10 * = 10 * 16^0 + 1* 16    * = 10 + 16  * = 26 ; */Assert.assertEquals(26 , a);}/** * 十进制 -> 十六进制 */@Testpublic void test08(){int a = 26 ;/** * 26 / 16 = 1 余 10 * 1 / 16 =  0  余 1 * 结果为 1  10 * = 0x1A */Assert.assertEquals(0x1A, a);}/** * 二进制 -> 十六进制 */@Testpublic void test10(){String s = "111011";/** * 从右向左每四位为一组分割,不足补0 * 得到 * 1011 0011  * 按照十进制方法 ,转换为十进制 * 11    3 * 然后从后向前排列得到 3  11 * 11对应B * 所以得到结果 0x3B */Assert.assertEquals(Integer.toBinaryString(0x3B), s);   }/** * 十六进制 -> 二进制 */@Testpublic void test09(){int a = 0x1A ;/** * 将每一位转换为由四位组成的二进制数 * 1   A * 转换 * 0001  1010 * 结果 * 11010 */Assert.assertEquals(Integer.toBinaryString(a), "11010");   }   }