
面试
xringm
这个作者很懒,什么都没留下…
展开
-
求两个整型数的平均值:return (x&y) + ((x^y)>>1)
在一个面试题里见到这么一道题:下面的代码:int func (int x, int y){ return (x&y) + ((x^y)>>1);}当 x 为 729,y 为 271 时函数的返回值是多少?思路最简单也最直接的就是将 x 和 y 都先转换为二进制,然后老老实实的做按位与,按位异或等运算,最后得出结果。在分析该表达式的实现思路之前,首转载 2016-10-11 13:16:42 · 984 阅读 · 0 评论 -
权势二进制
传送门一个十进制整数被叫做权势二进制,当他的十进制表示的时候只由0或1组成。例如0,1,101,110011都是权势二进制而2,12,900不是。 当给定一个n的时候,计算一下最少要多少个权势二进制相加才能得到n。Input 单组测试数据。 第一行给出一个整数n (1Output 输出答案占一行。 Input示例 9 Output示例 9转载 2016-10-18 14:26:46 · 545 阅读 · 0 评论 -
逗号表达式
C语言提供一种特殊的运算符——逗号运算符。用它将两个表达式连接起来。如: 3+5,6+8称为逗号表达式,又称为“顺序求值运算符”。逗号表达式的一般形式为 表达式1,表达式2逗号表达式的求解过程是:先求解表达式1,再求解表达式2。整个逗号表达式的值是表达式2的值。例如,上面的逗号表达式“3+5,6+8”的值为14。又如,逗号表达式 a=3*5,转载 2016-10-18 18:22:42 · 943 阅读 · 0 评论 -
位运算
要点 1 它们都是双目运算符,两个运算分量都是整形,结果也是整形。 2 " 3 ">>"右移:右边的位被挤掉。对于左边移出的空位,如果是正数则空位补0,若为负数,可能补0或补1,这取决于所用的计算机系统。 4 ">>>"运算符,右边的位被挤掉,对于左边移出的空位一概补上0。位运算符的应用 (源操作数s 掩码mask)转载 2016-10-19 15:42:58 · 287 阅读 · 0 评论 -
打印int值的二进制形式
掩码是个常量或变量,用于从另一个变量或表达式提取所需要的位。由于int常量1的二进制表达形式如下:00000000 00000000 00000000 00000001 它可以用于判断一个int表达式的低端位。下面的代码使用了这个掩码,打印出一个0和1交替的序列: int i,mask=1;for(i=0;iprintf("%d",i&mask);如果转载 2016-10-19 16:21:53 · 1688 阅读 · 0 评论