|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
我又来喽!!!! 首先尼,欢迎大家再次滴到来,再次表示感谢。(让我低调的装个深沉 )
每天都能给大家带来知识,也是我的快乐,我也不会发什么特别技术的帖子,只是希望刚接触的小白能够少走弯路,能够更好的进入这个编程道路,让我的苦逼换来你们的幸福,那么进入正题,位运算符的问题。
首先呢,没接触过位运算符的同胞们,我就先稍稍的普及一下知识。告诉你们这些能干啥用,至于怎么用的好呢,靠自己喽。
1> 按位与运算符: & 按位与 如果两个相应的二进制位都为1,则该位的结果值为1,否则为0
| 按位或 两个相应的二进制位中只要有一个为1,该位的结果值为1
^ 按位异或 若参加运算的两个二进制位值相同则为0,否则为1
~ 取反 ~是一元运算符,用来对一个二进制数按位取反,即将0变1,将1变0
<< 左移 用来将一个数的各二进制位全部左移N位,右补0
>> 右移 将一个数的各二进制位右移N位,移到右端的低位被舍弃,对于无符号数,高位补0
2> 哎!这就是大概的用法。那我说这些东西普遍用在哪里,你们想想怎么来实现吧!!!!!
这玩意的存在就是为了剩内存,你想想操作系统为了做的都是挺短小精干,能省地方就省地方呗,那么一个字节有八个位,你想想着8个位置要是当做开关的话,就能够代表8个开关,如果定义一个int类型也忒浪费了吧,这样的话,你只需要操控这些位运算符就可以实现对这些开关的控制,在运行API函数(就是为了更方便的使用函数,把这些函数封装在API中,里面可能包含多个函数。算是一个接口)的时候,你可以通过这个值来判断是否进行这个函数的操作啊,或者一些其他的操作。
3> 呦,不错哦(周董的台词)
那么,左移运算符跟右移运算符尼,搞着玩意干啥子嘛。想想在内存中都是以二进制的形式存储的数据,一个字节有八个位置,每当左移一位不就是乘以2吗,比如十进制的数,你乘以10,就是在左移一位吧。看它的基数是多少,乘以多少就是代表左移。
那右移就是除呗~~~~~~ (这种方式跟以前的编译器的乘除有关系的。)
4> 那么咱们现在就来谈谈我们使用中常见的错误吧。
例如: if(a&b==0) 即使a&b的值是0 它也不会运行跳进去的,a&b这只是一个操作,并不会真正的对ab进行改变。那么怎么解决呢
可以这样 int c=a&b;
if(c==0){ } 这样不就间接的跳过这个坎去了吗??
本少侠以简洁的话,帮大家整理下思路。那么也请大家多多支持!!!
~~~~~~~~你们的支持是我最大的动力!!!!!!!!!! |
|