求助
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




