首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

按位与的功用,左移,右移的作用各是什么

2012-08-14 
按位与的作用,左移,右移的作用各是什么今天看以前别人写的代码。宏定义用了好多按位与、或、左移右移。都有什

按位与的作用,左移,右移的作用各是什么
今天看以前别人写的代码。
宏定义用了好多按位与、或、左移右移。

都有什么作用啊???
我就知道这些方法的结果是什么。
却不知道作用是什么??

高手给讲一讲倍,

不要百度来的答案。谢啦

[解决办法]
根本的就是:按位左移,所有位都向左移动一位,左边补零,右边溢出则舍去。数字上的意思是左移一位,乘以2。按位右移有两种,一种是逻辑右移,另一种是算术右移。逻辑右移左边补零,右边溢出舍去,算术右移左边补最高位,右边溢出舍去。c/c++中没有详细规定什么时候用什么右移,但是有个没有验证的说法是,有符号的是算术右移,无符号的是逻辑右移。当然,右移在数字上就是除以了2了。
按位操作的好处就是计算性能好了,能提升速度。计算机实现乘除法是很费力的,而人工的给它用按位优化一下就好多了,听说编译器能再一定程度上优化一部分。但咱也是菜鸟,没验证过。
再别的功能就是非数字计算方面的了,这个很灵活,说实话我也不知道该怎么说,比如用于标记方面的。。。 。。。
java中对于右移有严格的定义,没有歧义,一种是>>,另一种是>>>。这个好很多。

热点排行