十进制转为二进制:python/java的实现

来源:互联网 发布:常州java培训 编辑:程序博客网 时间:2024/05/21 08:42

对于这个问题,我最先想到的是如果使用c来实现,该怎么做?发现会异常麻烦,需要定义数组,字符指针。用完还得释放指针。

当然,我并没有去做这个尝试,只是大致想了一下实现方案。

  • 以下是基于java8的实现方式:
/**     * <pre>     *     * 30     *     * 15   0     * 7.   1     * 3.   1     * 1.   1     * 0.   1     *     * --> 11110     *     * </pre>     *     * @param num     * @return     */    public static String toBinary(int num) {        // 3/2 --> 1,1 --> 1,1/2 --> 1,01 --> 11        int r = 0;        ArrayList<Integer> binaryList = new ArrayList<>();        while (true) {            r = num % 2;            num = num / 2;            binaryList.add(r);            if (num == 0) break;        }        Collections.reverse(binaryList);        StringBuilder sb = new StringBuilder();        binaryList.forEach(sb::append);        return sb.toString();    }
  • 以下是基于python3的实现方式:
#!/usr/bin/env python3# -*- coding: utf-8 -*-# @name   : binaryT.py# @author : cat# @date   : 2017/7/4.def to_binary(num):    ret = []    while 1:        r = num % 2        num = num // 2        print('- ', r, num)        ret.append(r)        if num == 0:            break    return "".join(str(k) for k in ret[::-1])if __name__ == '__main__':    print(to_binary(30))    pass