从十进制转换为二进制

时间:2015-02-22 22:54:45

标签: function binary decimal writing

本部分实验的目标是激励从右到左将十进制数转换为二进制形式。因此,您将最终编写一个函数numToBinary(anInteger),其工作方式如下:

  
    
      

numToBinary(5)       '101'

    
  

我的代码是:

def isOdd (x):
    if x%2==1:
        return('True')
    if x%2==0:
        return('False')

def numToBinary(x):
    if n==0:
        return ''
    elif isOdd(x):
        return numToBinary(x//2)+'1'
    else:
        return numToBinary(x//2)+'0'

但是这会从左到右返回字符串。任何人都可以帮我找到从左到右表示到从右到左表示的方法吗?

2 个答案:

答案 0 :(得分:0)

我用数组做了。这是我的代码。希望你能得到它,它会帮助你。

int numberArray[100], number, quo, rem, i=0, j;

cout << "Enter positive number : ";
cin >> number;

while(number > 0)
{
    quo = number/2; // quo defines the quotient.
    //cout << "\n" << quo;

    rem = number % 2; // rem defines the reminder.
    //cout << rem;

    numberArray[i] = rem;

    i++;
    number = quo;
}

cout << "Binary digits of entered number are : ";

// Below loop is for result of binary numbers, entered by user.
for(j=i-1; j>=0; j--)
{
    cout << numberArray[j];
}

感谢, 阿迪尔

答案 1 :(得分:0)

这是Python吗?

我没有看到任何&#34;从左到右&#34;你的代码中的问题。但是,您提供的函数isOdd会返回字符串('False''True')。它应该返回布尔值(即删除单引号)。

def isOdd (x):
    if x%2==1:
        return(True)  # <<< THIS
    if x%2==0:
        return(False) # <<< AND THIS

此外,您在n内使用了一个名为numToBinary的变量,该变量未在任何地方定义(显然应为x

def numToBinary(x):
    if x==0:          # <<<< THIS!
        return ''
    elif isOdd(x):
        return numToBinary(x//2)+'1'
    else:
        return numToBinary(x//2)+'0'

此代码应该可以正常工作。

如果只是想要将数字转换为二进制,则可以使用Python的内部bin函数。请尝试:bin(5)[2:]例如。