阿里研发一笔试题foo(2^31-3)

来源:互联网 发布:c语言中volatile byte 编辑:程序博客网 时间:2024/04/30 05:18

这是2014阿里研发笔试题

怎么解?

步骤:

   【1】2^31-3这个表达式看成2的31平方减3就错了。实质^是异或 ,—比^优先级高,所以2^(31-3)=2^28=30

   【2】foo(30):

                  return 30 & -30;

             

           30:0001 1110

          -30补码表示:1110 0010(取反+1)

              0001 1110

          & 1110 0010

              0000 0010   (2)

         注: 32bit ,4个字节表示,前三个字节我省略没写出。因为取反+&运算以后为0。

所以选C 2

补充:如果我写的有bug,欢迎大家指正。

原创粉丝点击