nul*_*ray 1 c c++ bit-manipulation bit-shift
假设我想i向左移位两次并将值存储在中f.
f = i << 2;
Run Code Online (Sandbox Code Playgroud)
那是对的吗?我究竟是如何在C/C++中做到这一点的?
是.
f = i << 2
Run Code Online (Sandbox Code Playgroud)
移位在许多有点繁琐的操作中很有用.
这曾经是将数字乘以4的好方法.然而,现在,优化编译器倾向于为您处理这些问题.
请记住,最左边的两个位被丢弃.
另外需要注意的是:即使您的问题已被标记C++,但值得注意的是C和C++在转移负值方面采用了略微不同的路径.在C++中,执行<<或>>负值的结果是实现定义的.在C中>>是实现定义的,同时<<产生未定义的行为.