我想在C ++中创建一个以数字为参数的方法。该方法应返回一个数字,该数字表示设置的该位数的八进制值。
示例:如果我将4作为参数传递,则函数应返回17,因为对于设置为true的位(1111)= 17.类似地,当我将5作为参数传递时,函数应返回37 as(11111)= 37。 77为6作为参数,依此类推。
答案 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)。