读书人

【C/C++】分享个笔考题

发布时间: 2013-06-25 23:45:42 作者: rapoo

【C/C++】分享个笔试题
如何把一个二进制数最右边(不一定是bit0)的0变成1?
如何把一个二进制数最右边(不一定是bit0)的1变成0?

答案我是知道的,大家尽情发挥~
[解决办法]
不限制长度?不限制大小端?
[解决办法]
...第二个是编程之美上的x &(x-1),第一个类似x
[解决办法]
(x+1)
[解决办法]
如果 给的2进制的数的 长度 超过系统变量长度呢
我只是 提出一点疑问 可以无视我 也许我钻牛角尖了
[解决办法]
2L正解。。。
[解决办法]
<<Hacker's Delight>>有更多的
[解决办法]

引用:
<<Hacker's Delight>>有更多的
能简单介绍下这本书吗
[解决办法]
x=x^1 异或下就行
[解决办法]
看错题意了,。应该是 x^(x &(-x))
[解决办法]

把右起第一个0变成1
例如: (100101111->100111111)
x
[解决办法]
(x+1)

把右起第一个1变成0
例如: (10011000->10010000)
x & (x-1)
[解决办法]
引用:
Quote: 引用:

<<Hacker's Delight>>有更多的
能简单介绍下这本书吗

网上搜一下,比我介绍得要详细,下面摘自百度百科http://baike.baidu.com/view/4618680.htm
书名:《Hacker's Delight》


作者:Henry S. Warren
出版社:Addison-Wesley Professional
这是第一本试图揭开计算机运算神秘面纱的书,极其适合于编译器编写者、库开发者、反工程爱好者研读,将给大家展示一些鲜为人知但非常有意义的二进制编码技巧以及底层Algorithms技巧,其内容超级强悍。

读书人网 >C++

热点推荐