返回信息流☆─────────────────────────────────────☆
tenor (最后的战役) 于 (Sat Sep 22 23:48:40 2007) 提到:
去计算所面试被鄙视了。
☆─────────────────────────────────────☆
Jarod (轻轻地我走了) 于 (Sat Sep 22 23:59:52 2007) 提到:
同被BS。不会
☆─────────────────────────────────────☆
daodao (刀刀) 于 (Sun Sep 23 00:07:40 2007) 提到:
余数。。
☆─────────────────────────────────────☆
coolfantasy (Cool) 于 (Sun Sep 23 00:11:59 2007) 提到:
(n - 1) & n
结果为0的是2的mi
☆─────────────────────────────────────☆
johnavon (Emacs) 于 (Sun Sep 23 00:12:29 2007) 提到:
很经典的哦
【 在 coolfantasy 的大作中提到: 】
: (n - 1) & n
: 结果为0的是2的mi
☆─────────────────────────────────────☆
tenor (最后的战役) 于 (Sun Sep 23 00:15:16 2007) 提到:
【 在 johnavon 的大作中提到: 】
: 很经典的哦
这是面试常问的题吧?
唉
☆─────────────────────────────────────☆
johnavon (Emacs) 于 (Sun Sep 23 00:21:20 2007) 提到:
这个不知道
我们班一个搞ACM的经常给我们“炫耀”类似的东西。。。
【 在 tenor 的大作中提到: 】
: 这是面试常问的题吧?
: 唉
☆─────────────────────────────────────☆
wks (cloverprince) 于 (Sun Sep 23 00:28:23 2007) 提到:
接着问一下,在知道这个数是2的若干次方的情况下,能不能用宏判断是几次方呢?
☆─────────────────────────────────────☆
zwz (ERA-The Mass) 于 (Sun Sep 23 01:02:13 2007) 提到:
10大留名
☆─────────────────────────────────────☆
nusher (相逢恨早) 于 (Sun Sep 23 01:06:59 2007) 提到:
技术帖
☆─────────────────────────────────────☆
IchijyouSan (一条さん|一条大神) 于 (Sun Sep 23 01:07:01 2007) 提到:
听说是十大......
☆─────────────────────────────────────☆
mmgroup (からす) 于 (Sun Sep 23 01:20:26 2007) 提到:
【 在 coolfantasy 的大作中提到: 】
: (n - 1) & n
: 结果为0的是2的mi
顶正解....
判断是否一个1加一堆0……就这样……
☆─────────────────────────────────────☆
wgynze (cheetah) 于 (Sun Sep 23 01:20:27 2007) 提到:
太技术贴了
☆─────────────────────────────────────☆
bj2k08 (戒网) 于 (Sun Sep 23 01:23:43 2007) 提到:
哇
☆─────────────────────────────────────☆
Exciting (Sa) 于 (Sun Sep 23 01:28:10 2007) 提到:
顶!!!
北邮人要多发技术贴!
☆─────────────────────────────────────☆
thisfeeling (胖胖的尼采) 于 (Sun Sep 23 01:37:17 2007) 提到:
哈哈
☆─────────────────────────────────────☆
coolfantasy (Cool) 于 (Sun Sep 23 01:46:01 2007) 提到:
#define f(x, y) while ((x = (x >> 1)) != 0) y++;
不要B4我。。。
【 在 wks (cloverprince) 的大作中提到: 】
: 接着问一下,在知道这个数是2的若干次方的情况下,能不能用宏判断是几次方呢?
☆─────────────────────────────────────☆
lg200303 (slight) 于 (Sun Sep 23 01:47:40 2007) 提到:
re
☆─────────────────────────────────────☆
abao (此时 我未成名卿未嫁) 于 (Sun Sep 23 01:51:35 2007) 提到:
受教了
☆─────────────────────────────────────☆
airbyr (Arcueid.Brunestud) 于 (Sun Sep 23 01:53:52 2007) 提到:
技术难得十大
☆─────────────────────────────────────☆
angriest (超级无敌小豆芽) 于 (Sun Sep 23 02:07:05 2007) 提到:
【 在 mmgroup 的大作中提到: 】
: 顶正解....
: 判断是否一个1加一堆0……就这样……
还是不太明白。。
☆─────────────────────────────────────☆
baoda (baoda) 于 (Sun Sep 23 02:22:01 2007) 提到:
不知道
☆─────────────────────────────────────☆
zwz (ERA-The Mass) 于 (Sun Sep 23 03:04:14 2007) 提到:
【 在 angriest 的大作中提到: 】
: 还是不太明白。。
2进制位与
☆─────────────────────────────────────☆
zwz (ERA-The Mass) 于 (Sun Sep 23 03:11:32 2007) 提到:
【 在 wks 的大作中提到: 】
: 接着问一下,在知道这个数是2的若干次方的情况下,能不能用宏判断是几次方呢?
可以验证是否是2的几次方,但是计算出是几次方似乎不好实现。。。。。。
☆─────────────────────────────────────☆
taotie1984 (北邮人) 于 (Sun Sep 23 03:24:14 2007) 提到:
转换成2进制,判断有几个零就可以知道是几次方了
☆─────────────────────────────────────☆
zwz (ERA-The Mass) 于 (Sun Sep 23 04:10:05 2007) 提到:
【 在 taotie1984 的大作中提到: 】
: 转换成2进制,判断有几个零就可以知道是几次方了
数据类型是int还是uint还是double?2进制位数不是和数据类型相关么。而且用宏怎么判断有几个0?
给段代码吧。。。。
☆─────────────────────────────────────☆
Jarod (轻轻地我走了) 于 (Sun Sep 23 08:31:43 2007) 提到:
技术贴啊
☆─────────────────────────────────────☆
seaver (benny) 于 (Sun Sep 23 08:44:10 2007) 提到:
对
【 在 zwz 的大作中提到: 】
: 数据类型是int还是uint还是double?2进制位数不是和数据类型相关么。而且用宏怎么判断有几个0?
: 给段代码吧。。。。
☆─────────────────────────────────────☆
mikebibby (万安人) 于 (Sun Sep 23 08:56:13 2007) 提到:
【 在 coolfantasy 的大作中提到: 】
: (n - 1) & n
: 结果为0的是2的mi
相当的不错,呵呵
☆─────────────────────────────────────☆
feiyangdn (feiyangdn) 于 (Sun Sep 23 09:37:53 2007) 提到:
用汇编实现很简单,主要用到的指令BT,BTR
BT---测试重最右端开始的某位非零
BTR--对某位清零
int xc;//被测试数
int yc;//结果为-1表示非2的幂次方,其他值为相应次方
_asm{
mov eax,xc;
bt ebx,eax; /*测试*/
mov yc,ebx;
btr eax,ebx; /*清零*/
cmp eax,0; /*判断清掉了xc中可能存在的最低bit的1之后的数是否为0*/
jnz xxx;
mov yc,-1;
xxx: nop;
}
写汇编比较枯燥, 而且容易出错,如果速度没有要求建议不.
☆─────────────────────────────────────☆
evengine (北邮人) 于 (Sun Sep 23 09:41:45 2007) 提到:
顶关于技术的帖子
☆─────────────────────────────────────☆
windam (windam) 于 (Sun Sep 23 10:13:29 2007) 提到:
cool的思路果然很快啊。。。
看到问题就有答案了。。。= =
☆─────────────────────────────────────☆
atian25 (蓝虫|阿天) 于 (Sun Sep 23 10:13:43 2007) 提到:
话说来我这面试的..没几个会回答3388的24点问题.. 真无语...
☆─────────────────────────────────────☆
skyapple (skyapple) 于 (Sun Sep 23 10:20:21 2007) 提到:
2的密次方 即 2的0,1,2,3....次方,即1,2,4,8....
用二进制表示就是
1
10
100
1000
10000
.....
依次右移判断是否为零不就行了...
☆─────────────────────────────────────☆
alloon (07新人已经登场|八卦帮之地水师) 于 (Sun Sep 23 10:37:32 2007) 提到:
以后我就去投奔你了。。。
【 在 atian25 的大作中提到: 】
: 话说来我这面试的..没几个会回答3388的24点问题.. 真无语...
☆─────────────────────────────────────☆
daHe (嗜血的罗密欧) 于 (Sun Sep 23 10:54:36 2007) 提到:
【 在 skyapple 的大作中提到: 】
: 2的密次方 即 2的0,1,2,3....次方,即1,2,4,8....
: 用二进制表示就是
: 1
: ...................
这样简单的描述很多人都会,关键是写出代码就难了
☆─────────────────────────────────────☆
Barbarosa (巴巴罗沙是海盗) 于 (Sun Sep 23 11:00:17 2007) 提到:
位运算很强大,技术贴得顶
☆─────────────────────────────────────☆
daHe (嗜血的罗密欧) 于 (Sun Sep 23 11:03:18 2007) 提到:
【 在 wks 的大作中提到: 】
: 接着问一下,在知道这个数是2的若干次方的情况下,能不能用宏判断是几次方呢?
如果该数是int型,至少有下面这种方法;long型也可以如法炮制的写下去,无非就是再长一些。如果是float或double型,就先强制转换成int或者long。
#define f(n) (n==0)+\
(n==2)*1+\
(n==4)*2+\
(n==8)*3+\
(n==16)*4+\
(n==32)*5+\
(n==64)*6+\
(n==128)*7
☆─────────────────────────────────────☆
flyinghawk (鹰击长空) 于 (Sun Sep 23 11:07:31 2007) 提到:
【 在 feiyangdn 的大作中提到: 】
用汇编实现很简单,主要用到的指令BT,BTR
BT---测试重最右端开始的某位非零
BTR--对某位清零
int xc;//被测试数
int yc;//结果为-1表示非2的幂次方,其他值为相应次方
_asm{
mov eax,xc;
bt ebx,eax; /*测试*/
mov yc,ebx;
btr eax,ebx; /*清零*/
cmp eax,0; /*判断清掉了xc中可能存在的最低bit的1之后的数是否为0*/
jnz xxx;
mov yc,-1;
xxx: nop;
}
厉害啊
☆─────────────────────────────────────☆
zhizi (一一) 于 (Sun Sep 23 11:22:21 2007) 提到:
我就是顶一下~
☆─────────────────────────────────────☆
vivin (阿诺) 于 (Sun Sep 23 11:48:20 2007) 提到:
受教了.
【 在 coolfantasy 的大作中提到: 】
: (n - 1) & n
: 结果为0的是2的mi
☆─────────────────────────────────────☆
fullhappy (游泳的鱼) 于 (Sun Sep 23 11:57:38 2007) 提到:
受教了
☆─────────────────────────────────────☆
freewings (新的旅程) 于 (Sun Sep 23 12:31:03 2007) 提到:
用二进制思考比较直接,一个1跟一堆0 就容易理解了
☆─────────────────────────────────────☆
phoenix1104 (Ashlee Simpson) 于 (Sun Sep 23 12:39:37 2007) 提到:
嗯
【 在 johnavon 的大作中提到: 】
: 这个不知道
: 我们班一个搞ACM的经常给我们“炫耀”类似的东西。。。
☆─────────────────────────────────────☆
Kadon (SeekIng) 于 (Sun Sep 23 12:41:05 2007) 提到:
俺水平太低 看不懂
☆─────────────────────────────────────☆
wks (cloverprince) 于 (Sun Sep 23 13:35:07 2007) 提到:
没有bs的意思.
这几天编程碰巧遇到了这个问题需要解决.
谢谢啦.
【 在 coolfantasy 的大作中提到: 】
: #define f(x, y) while ((x = (x >> 1)) != 0) y++;
: 不要B4我。。。
☆─────────────────────────────────────☆
lili (lili) 于 (Sun Sep 23 13:49:02 2007) 提到:
ding
☆─────────────────────────────────────☆
zwz (ERA-The Mass) 于 (Sun Sep 23 15:20:56 2007) 提到:
【 在 daHe 的大作中提到: 】
: 这样简单的描述很多人都会,关键是写出代码就难了
>>和 &0x01,这个不难,问题是在不知道数据类型的情况下用一个宏同时判断多个位,这个比较难
☆─────────────────────────────────────☆
zwz (ERA-The Mass) 于 (Sun Sep 23 15:26:31 2007) 提到:
【 在 atian25 的大作中提到: 】
: 话说来我这面试的..没几个会回答3388的24点问题.. 真无语...
这个我会。。。。恩
☆─────────────────────────────────────☆
kai (雅典娜的凯子) 于 (Sun Sep 23 16:07:56 2007) 提到:
技术贴上十大了,一定要顶
☆─────────────────────────────────────☆
xiaojia164 (【顶你小分队】│虢虓湛卢) 于 (Sun Sep 23 16:10:07 2007) 提到:
原来位运算如此强大。
☆─────────────────────────────────────☆
maroon (mumu) 于 (Sun Sep 23 18:44:35 2007) 提到:
【 在 coolfantasy 的大作中提到: 】
: (n - 1) & n
: 结果为0的是2的mi
受教了,
不过这个队所有类型的数都成立么?
☆─────────────────────────────────────☆
keen (keen) 于 (Sun Sep 23 19:48:05 2007) 提到:
gongtongxuexi
☆─────────────────────────────────────☆
jhx0129 (jhx) 于 (Sun Sep 23 20:28:10 2007) 提到:
不看都知道你牛
【 在 feiyangdn 的大作中提到: 】
: 用汇编实现很简单,主要用到的指令BT,BTR
: BT---测试重最右端开始的某位非零
: BTR--对某位清零
: ...................
☆─────────────────────────────────────☆
AgCl (0o游水部o0【一等公爵】|SANJI) 于 (Sun Sep 23 20:28:12 2007) 提到:
看到最后"的宏"两个字就不知道在说什么了
☆─────────────────────────────────────☆
SunFlowers () 于 (Sun Sep 23 21:03:21 2007) 提到:
问一下 宏写成这样
我 printf("%d\n", f(x,y)) 能运行吗?
【 在 coolfantasy 的大作中提到: 】
: #define f(x, y) while ((x = (x >> 1)) != 0) y++;
: 不要B4我。。。
☆─────────────────────────────────────☆
zwz (ERA-The Mass) 于 (Sun Sep 23 22:10:45 2007) 提到:
【 在 SunFlowers 的大作中提到: 】
: 问一下 宏写成这样
: 我 printf("%d\n", f(x,y)) 能运行吗?
这样语法不通啊
☆─────────────────────────────────────☆
IchijyouSan (一条さん|一条大神) 于 (Sun Sep 23 22:15:30 2007) 提到:
【 在 SunFlowers 的大作中提到: 】
: 问一下 宏写成这样
: 我 printf("%d\n", f(x,y)) 能运行吗?
所以要换个宏啊
比如说
f(x) (log(x)/log(2))
嗯
☆─────────────────────────────────────☆
yanhui (ScST^05409->(伊斯蘭)) 于 (Sun Sep 23 22:25:00 2007) 提到:
十大。。
☆─────────────────────────────────────☆
czyoyo (yoyo~★`喜欢小猫咪) 于 (Sun Sep 23 22:44:17 2007) 提到:
为什么一点都看不懂..哭
☆─────────────────────────────────────☆
Bergwolf (计忆邮心|Kinight) 于 (Sun Sep 23 23:56:46 2007) 提到:
这种题直觉都该从位运算做文章
对数运算确实比较新颖^_^
【 在 IchijyouSan (一条さん|一条大神) 的大作中提到: 】
: 所以要换个宏啊
: 比如说
: f(x) (log(x)/log(2))
: ...................
☆─────────────────────────────────────☆
famed123 (^_^) 于 (Mon Sep 24 00:40:39 2007) 提到:
希望以后多看到这种十大楼。。。。。。。。
少些囧楼上十大就好咯
☆─────────────────────────────────────☆
aguar (aguar) 于 (Mon Sep 24 00:44:07 2007) 提到:
恩 受教
☆─────────────────────────────────────☆
powerclark (powerclark) 于 (Mon Sep 24 08:27:45 2007) 提到:
bd
☆─────────────────────────────────────☆
dexter88 (Dexter) 于 (Mon Sep 24 11:42:30 2007) 提到:
慢慢来,别急,多接触接触就看知道他们在说什么了,编程的一步一步的学.......
ps:我也看不懂:)
【 在 czyoyo 的大作中提到: 】
: 为什么一点都看不懂..哭
这是一条镜像帖。来源:北邮人论坛 / soft-design / #21525同步于 2007/10/3
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖
[合集] 如何写一个判断一个数是否是2的幂次方的宏啊?
CNLAS
2007/10/3镜像同步0 回复
订阅后,新回复会通过你的通知中心匿名送达。
0 条回复
暂无回复 · 你可以订阅本帖等待新回复。