2010-05-26 99 views
-5

我需要创建函数返回第d位给定数字 任何人都可以帮助我吗?显示第012位数字

+3

位或数字?你的问题的标题是数字,你的问题有点说,那是什么? – 2010-05-26 13:50:17

+0

你将需要更清楚你的问题。 – Laplace 2010-05-26 13:50:32

+0

我不会写它,但10分区将成为你的朋友。 – 2010-05-26 13:50:57

回答

4

要返回一个数的第n个数字,这样做:

digit = (number/base^N) mod base 

  • /是整数除法在这里。
  • base 对于小数为10,对于八进制为8,对于十六进制为16等(尽管对于基数> 10,您将需要将获得的数字转换为适当的数字,因为对于十六进制将得到11-15但它实际上应该是数字AF)

其中“N”从右侧计数,从零开始。如果你需要从左边开始计算,那么如果你只是转换为一个字符串而不是使用substring,那么可能会更容易。

对于单位:

bit = (number >> N) and 1 

其中再次N从从右计数,并从零开始。尽管如此,你也可以使用第一个变种的位数,只是使用2的base,但是在按位操作的性能上可能比在分割和mod下的性能略好。

1

这会给你在多个特定位:

(number >> bit) & 1 

如果例如number是32(二进制00100000)和bit为5,将得到的值为1

在代码>>shift right运营商和&是运营商binary and