读书人

求解求解!请见教

发布时间: 2013-01-05 15:20:40 作者: rapoo

求解求解!!请赐教
请问,位运算符一般在哪类程序中会用到??觉得目前学的东西里似乎都不用。。。
多谢
[解决办法]
比如做二进制的除法运算,用移位运算符,
其次在标志位中经常用到
[解决办法]
用的地方也是很多的,比如在驱动中会用到,比如网络协议中的IP头也是需要位运算的。
[解决办法]
位运算可以实现许多数的操作(比如左移一位就是翻以一倍),比如你要对一个数的某些位清零或者要提取某些位,一个位运算就可以搞定,而你在如果不用这你可能还得写一个小函数去实现此功能,位运算是很高效的,但是这些最底层的东西一般都和汇编结合的比较多(比如操作地址),一般汇编高手都对位运算很擅长,反正我不是很擅长,只知道他们的具体用法。
有一个算是比较经典位运算的问题:如何不用临时变量交换俩个数。
算法为:a=a^b;
b=b^a;
a=a^b;
当然你也可以用来凑加法和减法来实现,可这种貌似会溢出(没试过);
大概就这么个意思,位运算要是掌握了绝对没坏处,我是不行反正,呵呵。
[解决办法]
很多类型的属性都是由一个个的标志位组成,这些通常是用位操作实现的,例如文件的可读,可写。。。
[解决办法]
图形处理这些
[解决办法]
以位为单位,存储信息的时候,多是些标志位什么的。

[解决办法]
嵌入式!!!
[解决办法]
asm基本离不开bit,不与bit打交道,就别写asm。。。。

c中涉及bit的:大量数据的顺序表达方法,基本所有的加密算法,压缩算法也都有bit的概念,驱动必须是要bit的,图像颜色运算,从字库显示颜色,。。。。

实际情况都会用到,考试用到的少。

个人观点:学不好bit就别写C、asm
[解决办法]
有的时候。。。左移,右移一位,相当于*2,或/2速度会比较快。。。。

读书人网 >C语言

热点推荐