CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

求助

楼主liu00072425()2006-12-01 08:54:17 在 C/C++ / C语言 提问

unsigned   getbits(unsigned   x,   int   p,   int   n){  
          return   (x   >>   (p+1-n))   &   ~(~0   <<   n);  
  }  
  这个函数中我假设x为12345678,p   =   4,   n   =   3,结果是输出456还是567   ?   我觉得应该输出456,如果(p+1-n)改为567是输出567,对吗? 问题点数:20、回复次数:11Top

1 楼steedhorse(晨星)回复于 2006-12-01 09:06:55 得分 0

位移运算是按二进制来的啊。Top

2 楼king_water(天上的星星)回复于 2006-12-01 09:16:32 得分 0

移位是2进制的不是10进制Top

3 楼shawnwan()回复于 2006-12-01 09:22:01 得分 0

2Top

4 楼hailongchang(什么时候才能看到星星啊。。。)回复于 2006-12-01 09:26:52 得分 0

任何信息在计算机中都是按二进制存储的,因此对整数的移位操作也是给予二进制的Top

5 楼jixingzhong(瞌睡虫·星辰)回复于 2006-12-01 09:48:52 得分 0

想得到你说的结果,  
  用   *     /     (10)   来完成Top

6 楼jixingzhong(瞌睡虫·星辰)回复于 2006-12-01 09:59:27 得分 20

x为12345678,p   =   4,   n   =   3,结果是输出567  
   
  unsigned   getbits(unsigned   x,   int   p,   int   n){  
          int   exp=0,   tmp=x;  
          while(tmp>0)                   //这里求   x   的总位数  
  {exp++;   tmp/=10;}  
          tmp   =   (int)(x/(pow(10.0,exp-n-p)))%(int)pow(10.0,   n);  
          return   tmp;  
  }Top

7 楼jixingzhong(瞌睡虫·星辰)回复于 2006-12-01 10:01:47 得分 0

呵呵,   看楼主的函数名字,  
  getbits   ,   应该是得到   x   的从   p位开始的连续   n   位     ...Top

8 楼liu00072425()回复于 2006-12-01 11:26:33 得分 0

我知道是2进制的,我说的是假设12345678,我的目的是为了好分析到底到底移到哪一位了Top

9 楼liu00072425()回复于 2007-04-17 19:33:19 得分 0

xiexieTop

10 楼liu00072425()回复于 2007-04-17 19:36:52 得分 0

xiexieTop

11 楼merlinfang(merlinfang)回复于 2007-04-17 21:27:08 得分 0

是啊,完全不对Top

相关问题

关键词

得分解答快速导航

  • 帖主:liu00072425
  • jixingzhong

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo