#include <iostream>#include <bitset>int main(){ unsigned char i = 2; std::cout<<std::bitset<8>((~static_cast<unsigned char>(0)) << i)<<std::endl; std::cout<<std::bitset<8>((~static_cast<unsigned char>(0)) >> i)<<std::endl; return 0;}
生产:
1111110011111111
并不是:
1111110000111111解决方法 在〜完成之前,static_cast< unsigned char>(0)被转换为int(整数提升发生),所以在〜之后它变为全一位int.然后将其移位并截断为bitset中的8位. 总结
以上是内存溢出为你收集整理的c – 右移位的奇怪行为全部内容,希望文章能够帮你解决c – 右移位的奇怪行为所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)