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

关于数值运算的有关问题、请大家帮忙看看

2012-03-19 
关于数值运算的问题、请大家帮忙看看在看代码的时候发现有这种运算inta=0a|0x0001...a&~(0x0001)...a|

关于数值运算的问题、请大家帮忙看看
在看代码的时候发现有这种运算
int   a   =   0;
a   |=   0x0001;
..   .
a   &=   ~(0x0001);
..   .
a   |=   0x0002;
..   .
a   &=   ~(0x0002);
..   .
a   |=   0x0004;
..   .
a   &=   ~(0x0008);
..   .
a   |=   0x0001;
..   .
a   &=   ~(0x0008);
..   .
请问他是想把a变成什么值、有经验的gg们是否能说说一般用于什么地方
谢谢

[解决办法]
用于多个开关中例如C++的流文件

(读,写)
(追加,覆盖)
(如果没有就创建文件,如果没有就报错)
……好几对开关,每个开关理论上只要一个bit而byte是8各bit,为了整合用:
00000000
|||-(如果没有就创建文件,如果没有就报错)
||-(追加,覆盖)
|-(读,写)
用一个BYTE 保存N个开关
用时:
mode_reading = (10000000b)//用二进制明显
mode_writing = (00000000b)
mode_create = 00100000b
mode_nocreate = 00000000b
如果t & mode_reading == mode_reading 说明使用了mode_reading开关
[解决办法]
这是置位操作的开关(Mask Value)
当你要把 第4位 置为 1 的时候,要写 a |= 0x0008
当你要把 第4位 置为 0 的时候,要写 a &= ~0x0008

呵呵,估计楼主所在的公司是写16位板子的公司。

热点排行