设置 n 位时获取八进制值

Get octal value when n bits set

我想在 C++ 中创建一个将数字作为参数的方法。该方法应该 return 一个数字,表示该位数集的八进制值。

示例:如果我将 4 作为参数传递,那么函数应该 return 17,因为位设置为真 (1111) = 17。同样,当我将 5 作为参数传递时,函数应该 return 37 as (11111) = 37. 77 for 6 as parameter and so on.

您可以使用左移运算符以及 2^(n)-1 是 n-1 个 1 的位串这一事实。

unsigned long long HexFunc(unsigned long long val)
{
   return (1 << val) - 1;
}

这是可行的,因为整数的左移运算符等效于将整数乘以 2(假设没有舍入)。因此 1 << val 本质上是 2^(n).

The method should return a number which represents a hex value for that number of bits set.

问题如前所述不明确。许多数字都设置了相同的位数。

Example: If I pass 4 as parameter then the function should return 17 because for bits set to true (1111) = 17.

不对,是15,但是30也能满足要求(11110),还有60、120、...,还有各种二进制数1010101001010101110011、等等

Similarly, when I pass 5 as parameter then the function should return 37 as (11111) = 37.

不,不是。 11111 是 31.

77 for 6 as parameter

又错了,是63

and so on.

问题如前所述不明确。要么你遗漏了一些东西,要么需要在源头上加以澄清。

而且您还没有一个二进制->十进制转换正确。你需要回顾一下。或者你说的是八进制?