C 将 int 转换为位移运算符
我只能使用这些符号:
! 〜& ^ | + << >>>
这是我需要实现的表格:
input | output
--------------
0 | 0
1 | 8
2 | 16
3 | 24
对于输出,我将左移一个 32 位 int。
前任。
int main()
{
int myInt = 0xFFFFFFFF;
myInt = (x << (myFunction(2)));
//OUTPUT = 0xFFFF0000
}
int myFunction(int input)
{
// Do some magic conversions here
}
有什么想法吗????
I can only use these symbols:
! ~ & ^ | + << >>
Here is the table I need to achieve:
input | output
--------------
0 | 0
1 | 8
2 | 16
3 | 24
With the output I am going to left shift a 32 bit int over.
Ex.
int main()
{
int myInt = 0xFFFFFFFF;
myInt = (x << (myFunction(2)));
//OUTPUT = 0xFFFF0000
}
int myFunction(int input)
{
// Do some magic conversions here
}
any ideas????
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
好吧,如果您想要一个具有
f(0) = 0
、f(1) = 8
、f(3) = 24
的函数,并且依此类推,您必须实现f(x) = x * 8
。由于 8 是 2 的完美幂,因此可以用移位代替乘法。因此:仅此而已。
Well, if you want a function with
f(0) = 0
,f(1) = 8
,f(3) = 24
and so on then you'll have to implementf(x) = x * 8
. Since 8 is a perfect power of two the multiplication can be replaced by shifting. Thus:That's all.