求一个算法。。。位移问题

ajiva 2005-01-24 01:48:39
求一个算法。。。位移问题

写成函数吧?
取得某个数字的二进制的 第N位 是0还是 1
网络字节序
15 14 13 12 .... 1 0

boolean GetSubByte(uint16 nIn,uint16 nIdx)
{
int ok=nIn >> nIdx;
return ok==1;
}

我怎么也弄不成功呢??
...全文
192 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
erben 2005-01-24
  • 打赏
  • 举报
回复
错了,应该是(1<<nIdx)&nIn
erben 2005-01-24
  • 打赏
  • 举报
回复
应该是return (1<<nIdx)&nIn
erben 2005-01-24
  • 打赏
  • 举报
回复
return sNum>> iBit<<15-iBit
hw110 2005-01-24
  • 打赏
  • 举报
回复
看错了,需要反转数字
继续偷懒
int GetSubByte(UINT16 sNum, int iBit)
{
return (sNum >> (16 - iBit)) % 2;
}
应该没错吧
ajiva 2005-01-24
  • 打赏
  • 举报
回复
boolean GetSubByte(uint16 nIn,uint16 nIdx)
{
return nIn & (1 << nIdx);
}

输入 ....010 =2
nIn=2
nIdx=1位

ajiva 2005-01-24
  • 打赏
  • 举报
回复
比如 。。000010 = 2
现在要取得 第15位 (为1 )
怎么取不出来呢??
ajiva 2005-01-24
  • 打赏
  • 举报
回复
int GetSubByte(DWORD dwNum, int iBit)
{
return (dwNum >> iBit + 1) / 2;
}
星河(如果要飞得高,就该把地平线忘掉) 说:
你用这个函数试yixia, dwNum>>iBit 只是把dwNum的低iBit位的数字全部除开,需要验证的数字变成了第一位,然后就只需要判断这个新数字是奇数还是偶数了
hw110 2005-01-24
  • 打赏
  • 举报
回复
int GetSubByte(DWORD dwNum, int iBit)
{
return (dwNum >> iBit + 1) / 2;
}
我觉得是
Martin_personal 2005-01-24
  • 打赏
  • 举报
回复
boolean GetSubByte(BYTE nIn,BYTE nIdx)
{
return (nIn >> 7-nIdx) & 0x01;
}
pomelowu 2005-01-24
  • 打赏
  • 举报
回复
汗~~返回类型要转换一下,不然编译会有warning
pomelowu 2005-01-24
  • 打赏
  • 举报
回复
boolean GetSubByte(uint16 nIn,uint16 nIdx)
{
return (nIn >> nIdx) & 1;
}

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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