我需要创建函数,它返回给定数字的第d位 有人可以帮助我吗?
答案 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
运算符。