问一个弱弱的问题,关于位运算

HUANG_JH 2004-08-12 03:06:14
看到一个汉字转拼音的函数

* 函数名称: MakeSpellCode
* 参数: [In] strText: String
* nMode: int
* [Out] 得到的拼音: String
* Space 是否用空格隔开每个拼音 true 隔开
* nMode 二进制功能位说明
* X X X X X X X X X X X X X X X X
* 3 2 1

如何给 nMode 的最后3位单独赋值??

...全文
73 点赞 收藏 4
写回复
4 条回复
FlyindanceDDr 2004年08月12日
pigja(朱健安) 比我的方法要好些...最近老是昏头...
回复 点赞
FlyindanceDDr 2004年08月12日
这样做就可以:

假设要将后3位赋值为010,010对应的数是2,那么:
nMode = (nMode & ~(0x7)) | 2 ;

(nMode & ~(0x7))的作用是将nMode的最后3位置为0,~(0x7)的位排列是:1111111111111000
回复 点赞
pigja 2004年08月12日
如果你想把最后一位赋成1,那么nMode |= 0x00000001;想赋成0,那么nMode &= 0xFFFFFFFE.
倒数第二位为1,nMode |= 0x00000002;为0,nMode &= 0xFFFFFFFD.
倒数第三位为1,nMode |= 0x00000004;为0,nMode &= 0xFFFFFFFB.
回复 点赞
RookieStar 2004年08月12日
函数体呢?
回复 点赞
发动态
发帖子
C语言
创建于2007-09-28

3.2w+

社区成员

24.0w+

社区内容

C语言相关问题讨论
社区公告
暂无公告