设置 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、...,还有各种二进制数10101010
,01010101
、110011
、等等
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.
问题如前所述不明确。要么你遗漏了一些东西,要么需要在源头上加以澄清。
而且您还没有一个二进制->十进制转换正确。你需要回顾一下。或者你说的是八进制?
我想在 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、...,还有各种二进制数10101010
,01010101
、110011
、等等
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.
问题如前所述不明确。要么你遗漏了一些东西,要么需要在源头上加以澄清。
而且您还没有一个二进制->十进制转换正确。你需要回顾一下。或者你说的是八进制?