免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 31309 | 回复: 92
打印 上一主题 下一主题

有没有好的公式. 能得出 一个byte中哪一位是1 如 00000100 得出3,(第三位是1), [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-08-25 12:52 |只看该作者 |倒序浏览
八位中只有一个1

[ 本帖最后由 cookis 于 2008-8-25 12:58 编辑 ]

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
2 [报告]
发表于 2008-08-25 12:53 |只看该作者

回复 #1 cookis 的帖子

你是要得出所有都是1的位呢还是测出最低为1的位?

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
3 [报告]
发表于 2008-08-25 12:58 |只看该作者

  1. char get_bit_one(unsigned char byte)
  2. {
  3.         for (int i = 0; i < 8; i++) {
  4.                 if ((byte >> i) & 1)
  5.                         return i;
  6.         }
  7.          return -1;
  8. }
复制代码

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
4 [报告]
发表于 2008-08-25 12:58 |只看该作者
8位中只有一位是1

论坛徽章:
0
5 [报告]
发表于 2008-08-25 12:59 |只看该作者
这个问题有什么难度吗?不就是位操作.

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
6 [报告]
发表于 2008-08-25 13:01 |只看该作者
我想要的是公式..
不想用函数或循环之类的方法.

一句话搞定的方法.

论坛徽章:
0
7 [报告]
发表于 2008-08-25 13:23 |只看该作者
何必整那么复杂呢。。

论坛徽章:
0
8 [报告]
发表于 2008-08-25 13:24 |只看该作者
以2为底,求对数

伪代码如下

  1. n
  2. for ( i=1; n>>=1;i++)
  3. {
  4.         ;
  5. }
复制代码



解释一下
n为被求值的数字
n==0是跳出循环的条件

跳出循环时,右移的次数,即为所需的结果

可能出现边界数值错误

请调整参数 i 的初始值,进行校对

论坛徽章:
0
9 [报告]
发表于 2008-08-25 13:26 |只看该作者
既然一只有一个位为 1, 取个对数就可以了。

论坛徽章:
0
10 [报告]
发表于 2008-08-25 13:28 |只看该作者



  1. #include <stdio.h>
  2. #include <math.h>

  3. int
  4. main ()
  5. {
  6.         int x, i;

  7.         int z[]={1,2,4,8,16,32,64,128};
  8.         for (i=0; i<8; i++){
  9.                 printf ("%d\n", (int)(log(z[i])/log(2)));
  10.         }
  11.        
  12. }
复制代码

0
1
2
3
4
5
6
7

[ 本帖最后由 win_hate 于 2008-8-25 13:33 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP