读书人

创维笔考题-求高人讲解

发布时间: 2013-03-27 11:22:42 作者: rapoo

创维笔试题----------求高人讲解
有int a = 15, 写代码实现第2位置1, 第三位置0:


我最初给他们的答案是 a |= 2, a &= 0xfffffffb;

但是他们问我有没有其他答案,于是我冥思苦想,以为他们要更高的效率,所以充分发掘数据的特性和要求。
给出答案是:a -= 2;

没有想到啊,,我得到的回复是我是SB。自然面试失败,一路上我都在想这个最终答案是什么,始终想不出来,求各位高人指教。。。。


创维,笔试题
[解决办法]


int a
[解决办法]
=(1<<2);

int a &= ~(1<<3);

[解决办法]
引用:
引用:a
[解决办法]
= 2;
a &= ~4;
TKS mujiok2003
你的答案有可能是,,但是效率也我没有我的高,,,至少我作为一个嵌入式软件工程师来说,,效率>算法>易读性....


这种题本来就是很傻的,我自己感觉没啥意思。甚至考的都是些小聪明啥的。

这题也可以这么想,比如第二位为1,就为十进制数2,考虑数为15,所以构造其整数倍为30.

也就是a<<1。
[解决办法]
引用:
引用:引用:引用:a
[解决办法]
= 2;
a &= ~4;
TKS mujiok2003
你的答案有可能是,,但是效率也我没有我的高,,,至少我作为一个嵌入式软件工程师来说,,效率>算法>易读性....

一般编译后就等价了……

如果你的编译器没有这优化,可以考虑换换了。
   int a = ~4;
00B11789 mov dword ptr [a],0FFFFFFFBh

[解决办法]
就没有直接沟通他们希望怎样?
个人一般是先最标准的写法,除非有明显的优化方案。
然后就是,可以沟通,看他们的真正意图。

另外个人的观点是,即使是嵌入式
效率<算法<易读性

读书人网 >C语言

热点推荐