int n = 500;unsigned int max = n>>4;cout << max;
打印出31.
500到达31后它做了什么?
解决方法 有点移位!原始二进制500:
111110100
转移4
000011111是31!
Original: 1111101001st Shift:0111110102nd Shift:0011111013rd Shift:0001111104th Shift:000011111 which equals 31.
这相当于将整数除以16.
500/16 = 31
500/2 ^ 4 = 31
一些事实从这里拉出来:http://www.cs.umd.edu/class/spring2003/cmsc311/Notes/BitOp/bitshift.html(因为从我头上咆哮导致漫无目的,这是非生产性的……这些人说它比我更干净)
使用<<<<<导致0从最低有效端(右侧)移位,并导致位从最高端(左侧)脱落. 使用>>向右移位导致0从最高端(左侧)移位,如果数字是无符号的,则导致位从最低端(右侧)掉落.
Bitshifting不会改变被移位变量的值.而是使用位移结果创建临时值.
总结以上是内存溢出为你收集整理的C做什么>>做全部内容,希望文章能够帮你解决C做什么>>做所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)