显示数字

时间:2010-05-26 13:48:43

标签: algorithm

我需要创建函数,它返回给定数字的第d位 有人可以帮助我吗?

2 个答案:

答案 0 :(得分:4)

要返回数字的第N位数,请执行:

digit = (number / base^N) mod base

注释

  • /在这里是整数除法。
  • base十进制为10,八进制为8,十六进制为16等(虽然对于base> 10,你需要将你得到的数字转换为正确的数字,因为你会得到11例如,对于十六进制,-15,但它应该是数字AF)

其中“N”从右侧开始计算,从零开始。如果您需要从左侧开始计数,那么如果您只是转换为字符串并使用子字符串则可能更容易。

一位:

bit = (number >> N) and 1

其中N从右侧开始计数,从零开始计算。虽然,您也可以使用第一个变量作为位,但只使用2的base,但使用逐位运算可能比使用除法和mod稍微好一些。

答案 1 :(得分:1)

这将为您提供一个数字中的特定位:

(number >> bit) & 1

例如,如果number为32(二进制00100000)且bit为5,则您将获得值1.

代码>>中有shift right运算符,&binary and运算符。