Java 基础 之 进制转换

一:进制

进制是计算机中数据的一种表示方法。 N进制的数可以用0~(N-1) 的数表示, 超过9的用字母A-F 表示 .
10进制,就是 用 0~9 的数表示,逢10 进 1
16进制,就是 由 0-9,A-F组成, 与10进制的对应关系是:0-9 对应0-9;A-F对应10- 15(字母不区分大小写)
2进制 由 0-1组成
8进制 由 0-7组成

1:n 进制 转十进制

假设我们要将n进制转换为十进制,首先我们从n进制的右边为第一位数(从低位到高位),其权值是n的0次方,第二位是n的1次方,依次递增下去,把最后的结果相加的值就是十进制的值了。
公式:
(xyz)n = x * n ^ 2 + y * n ^1 + z * n ^0
(101)2 = 1 * 2 ^2 + 0 * 2^1 + 1 * 2^0 = 5
(101)8 = 1 * 8 ^2 + 0 * 8^1 + 1 * 8^0 = 65
(101)16 = 1 * 16 ^2 + 0 * 16^1 + 1 * 16^0 = 257

2:十 进制 转 n 进制

假设我们要将十进制转换为n进制,首先我们十进制除以权值n,依次除下去,直到不能再被除为止,然后将余数从下往上取。

二 : 二进制,八进制,十六进制 转 十进制

Solution 1: 用java提供的api完成转换

    Integer.valueOf(String s, int radix)

Solution 2: 自己写算法实现上面公式

/**
 * 转换2,8,16进制成10进制
 * @param chars 2,8,16进制字符串
 * @param baseNum 2,8,16进制
 * @return 10进制数值
 */
private int calcIntValue(char[] chars, int baseNum) {
        int length = chars.length;
        int value = 0;
        for(char c : chars) {
            value +=  (Integer.valueOf(c) - 48) * Math.pow(baseNum, length - 1);
            length -= 1;
        }
        return value;
}

三: 十进制 转 二进制,八进制,十六进制

Solution 1: 用java提供的api完成转换

    Integer.toBinaryString(int i)
        Integer.toOctalString(int i)
        Integer.toHexString(int i)

Solution 2: 自己写算法实现上面公式

    /**
     * 将10进制转成2,8,16进制
     * @param decimal 10进制数值
     * @param baseNum 2,8,16进制
     * @return 2,8,16进制 串
     */
    private String calcConvertString(int decimal, int baseNum) {
        this.dataStack = new LinkedList<Integer>();
        StringBuilder sbBinary = new StringBuilder();

        int x = 0;
        while (0 != (decimal / baseNum)) {
            x = decimal % baseNum;
            this.dataStack.push(x);

            decimal = decimal / baseNum;
        }

        this.dataStack.push(decimal % baseNum);
        while (null != this.dataStack.peek()) {
            sbBinary.append(this.dataStack.pop());
        }

        return sbBinary.toString();
    }
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,591评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,448评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,823评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,204评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,228评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,190评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,078评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,923评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,334评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,550评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,727评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,428评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,022评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,672评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,826评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,734评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,619评论 2 354

推荐阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,340评论 0 2
  • 进位制/位置计数法是一种记数方式,故亦称进位记数法/位值计数法,可以用有限的数字符号代表所有的数值。可使用数字符号...
    zllylgw阅读 2,353评论 0 0
  • 十进制--->二进制 对于整数部分,用被除数反复除以2,除第一次外,每次除以2均取前一次商的整数部分作被除数并依次...
    张轻舟阅读 914评论 1 3
  • (一)、进制之间的转换 八进制:0-7 十六进制:0-F 1、十进制 与 二进制之间的转换 (1)、十进制转换为二...
    MPPC阅读 21,496评论 2 49
  • 举家携小姑探望双亲,是每逢佳节最重要的事儿,让“倍思亲”化作“倍欢欣”,该是儿女最大的孝心。 两个多小时的车程,飞...
    晓贤偶拾阅读 491评论 3 4