设置n位时获取八进制值

时间:2015-09-14 23:22:40

标签: c++ bitset

我想在C ++中创建一个以数字为参数的方法。该方法应返回一个数字,该数字表示设置的该位数的八进制值。

示例:如果我将4作为参数传递,则函数应返回17,因为对于设置为true的位(1111)= 17.类似地,当我将5作为参数传递时,函数应返回37 as(11111)= 37。 77为6作为参数,依此类推。

2 个答案:

答案 0 :(得分:1)

  

该方法应该返回一个数字,表示该设置位数的十六进制值。

如上所述,问题含糊不清。许多数字的位数设置相同。

  

示例:如果我将4作为参数传递,则函数应返回17,因为对于设置为true(1111)= 17的位。

不,不是,它是15,但30也满足要求(11110),60,120,......,以及各种数量的二进制形式10101010,{{1 },01010101

  

同样,当我将5作为参数传递时,函数应返回37为(11111)= 37。

不,不。 11111是31。

  

77 for 6作为参数

错了,这是63。

  

等等。

如上所述,问题含糊不清。要么你已经遗漏了某些东西,要么需要在源头澄清。

你还没有一个二进制 - >十进制转换权。你需要检查一下。或者你在用八进制说话?

答案 1 :(得分:0)

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

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

这是有效的,因为整数的左移运算符相当于将整数乘以2(假设没有发生舍入)。因此1&lt;&lt; val基本上是2 ^(n)。