您的位置:首页 > 编程语言 > Python开发

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

2017-07-05 00:54 375 查看
对于这个问题,我最先想到的是如果使用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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: