当前位置: 首页 > 面试题库 >

在不使用任何中间基数的情况下将数字从基数B1转换为基数B2

赵鸿畴
2023-03-14
问题内容

有没有一种方法可以将数字从基数B1转换为基数B2,而无需使用任何中间基数。

例如:

214(从5到16),而无需先将其转换为十进制,然后再将其转换为十六进制。

-

谢谢

Alok Kr。


问题答案:

要将214 base5转换为不带中间基数的16基数,您“只是”必须知道如何直接在5基数中进行计算。

首先,您需要一张表,其中以15为底的16位数字是什么(将以10为底的基数转换为16时,您需要一个类似的表,只是更容易记住!)。该表很容易创建-
只需从0开始,然后以5为基数递增每一行,直到达到f16基数为止。

base 16 | base 5
--------+--------
      0 |  0
      1 |  1
      2 |  2
      3 |  3
      4 |  4
      5 | 10
      6 | 11
      7 | 12
      8 | 13
      9 | 14
      a | 20
      b | 21
      c | 22
      d | 23
      e | 24
      f | 30

现在,您只需要重复除以16(即31 base5)。现在,我们回想起小学时代,并使用长除法(如果这看起来很难,那是因为没有人让您学习以5为基数的时间表!):

第1步:

   ______
31 ) 214

第2步:

       3 
   ______
31 ) 214 -
     143

第三步:

       3 
   _____
31 ) 214 -
     143  
    ----
      21

因此214 base5除以31 base5的结果是3 base5余数21 base5。

这意味着base16中的最低有效数字是21 base5,您可以在表中找到的是b base16。除法的结果是3 base5-如果大于30
base5,我们将再次除法-但是不是,所以这意味着最高有效位是3 base16(再次使用表格)。

因此答案是214 base5 = 3b base16。



 类似资料:
  • 不使用方法,如何用八进制表示十进制负数? 例如: -3(基数10)=37777777775(基数8) 但是我应该用什么算法得到这个结果呢? 这些是我的任务的测试用例:

  • 问题内容: Python允许通过给定基数的字符串通过以下方式轻松创建整数 我想执行相反的操作:从integer创建一个字符串,即我想要一些函数int2base(num, base),例如: 函数名称/参数顺序不重要。 对于任何数量x和底座b是会接受的。 这是一个易于编写的函数:实际上,比在此问题中对其进行描述更容易。但是,我觉得我必须丢失一些东西。 我知道的功能,,,但我不能使用他们的几个原因:

  • 问题内容: 我有这个: 输出: 为什么我在这里出错? 和 错误的含义是什么? 它告诉我什么? 问题答案: 您在这里遇到错误,是因为当您使用接受varargs的函数时,此函数在幕后创建了您在其中传递的对象的新数组。因此,实际上得到 了一个整数数组 。 当您传递整数 数组时,请 在后台创建 一个 整数 数组数组 。这就是为什么您不能通过以下循环对其进行迭代: 尝试像这样更改它: 实际上,您将看到对传递

  • 我必须写一个方法,它有一个Integer类型的参数,并且必须返回一个Character类型的对象。如果给定参数的值可以表示为字符对象,则将其作为字符返回。否则返回null。 我的任务制定得很糟糕,它说:“不安全的转换(例如从int到char)在你的代码中是不允许的”,我想这不是不安全的,但也不允许? 到目前为止我的代码: 我试图通过任何方式修复它,但就是无法提出不使用不安全转换的解决方案,非常感谢

  • 问题内容: 是否有一种优雅的方法将原语数组转换为相应容器对象的数组- 例如,将a 转换为a ?还是我坚持循环浏览并手动执行? 是的,循环并不完全困难。有点丑。 问题答案: Apache Commons Apache Commons / Lang 有一个ArrayUtils类,用于定义这些方法。 所有称为 从原始数组转换为包装器数组的方法 从包装对象数组到原始数组的所有转换 例: 番石榴 但是然后我

  • 我的任务是创建一个方法,该方法将接受用户输入的3位数int,并输出其反方向(123-321)。我不允许将int转换为字符串,否则我将失去分数,我也不允许打印main以外的任何地方。