求个关于位的算法

一如当初 2014-12-16 02:30:03
要求去掉某位,比如十进制147,转换为二进制为10010011
算法要求去掉中间的1(红色部分),二进制变为1000011,转换为十进制为67

最终也就是147->67
...全文
108 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2014-12-17
  • 打赏
  • 举报
回复
((147>>1)&0x70)|(147&0x0F)
marsliu1984 2014-12-17
  • 打赏
  • 举报
回复
#define bit(x)   (1<<(x))

int clrbit(int number, int n)
{
       number = (number & (~bit(n)));
     return number;
}

int main(void)
{
        int in, i;
       scanf("%d", &in);
      scanf("%d", &i);
   in = clrbit(in,i);
printf("%d\n",in);
return 0;
}
marsliu1984 2014-12-17
  • 打赏
  • 举报
回复
#define bit(x) (1<<(x)) int clrbit(int number, int n) { number = (number & (~bit(n))); return number; } int main(void) { int in, i, out=0, k = 1; scanf("%d", &in); scanf("%d", &i); clrbit(in,i); printf("%d\n",in); return 0; }
老猫 2014-12-16
  • 打赏
  • 举报
回复

#include <stdio.h> 
int main()
{
   int in, i, out=0, k = 1;
   scanf("%d", &in);
   scanf("%d", &i);
   while (in>0)
   {
		if (i!=0)
		{
			out = out  + k * (in % 2) ;
			k=k*2 ;
		}
		in = in / 2;
		i--;
   }
   printf("%d  ",out);
   return 0;
}

69,368

社区成员

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

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