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

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位单独赋值??

...全文
129 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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
  • 打赏
  • 举报
回复
函数体呢?

70,020

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧