十进制,二进制的转换

今天没事儿刷了个题,本以为是十分easy的题目,结果结实把我恶心了一阵。。。就是一个简单的十进制二进制转换的问题

二进制求和

描述
笔记
数据
评测
给定两个二进制字符串,返回他们的和(用二进制表示)。

您在真实的面试中是否遇到过这个题? Yes
样例
a = 11

b = 1

返回 100

解法:很简单,先把二进制转换为十进制,然后加和,然后再转换为2进制。需要注意的是,二进制to十进制很容易,但是十进制to二进制的时候,得到的顺序是“逆”的,我最开始就栽在这个地方了。因此需要用一个列表去储存每次得到的余数,然后把链表逆置。

代码如下:

class Solution:
    # @param {string} a a number
    # @param {string} b a number
    # @return {string} the result
    def binary_to_integer(self,n):
        count = 0
        sum = 0
        while n != 0:
            value = n % 10
            sum += 2 ** count * value
            count += 1
            n /= 10
        return sum

    def integer_to_binary(self,m):
        if m == 0:
            return 0
        count = 0
        sum = []
        while m !=0:
            value = m % 2
            sum.append(str(value))
            m /= 2
        sum = sum[::-1]
        a = "".join(sum)
        return a

    def addBinary(self, a, b):
        # Write your code here
        a = int(a)
        b = int(b)
        new_integer = self.binary_to_integer(a) + self.binary_to_integer(b)
        return str(self.integer_to_binary(new_integer))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值