对于给定的一个数字,将其对应的二进制的最右边的1改为0("turn off") 例如给你14,二进制为1110,函数处理后为1100,对应为12 ,写出实现这个功能的函数。
简单题,为面试练手。
2012.9.9.发现原来做法太sb了,更新C代码。
- my $count = 0;
- my $origin = $ARGV[0];
- my $input = $origin;
- while($input%2 !=1){
- $input /= 2;
- $count++;
- }
- $origin -= (2**$count);
- print $origin;
- /*
- * =====================================================================================
- *
- * Filename: turnoff.c
- *
- * Description:
- *
- * Version: 1.0
- * Created: 10/09/2012 03:36:49 PM
- * Revision: none
- * Compiler: gcc
- *
- * Author: YOUR NAME (),
- * Organization:
- *
- * =====================================================================================
- */
- #include <stdlib.h>
- #include <stdio.h>
- /*
- * === FUNCTION ======================================================================
- * Name: main
- * Description:
- * =====================================================================================
- */
- int
- main ( int argc, char *argv[] )
- {
- int input = 3;
- int pattern = 1;
- while((input & pattern) == 0){
- pattern = pattern<<1;
- }
- input ^=pattern;
- printf ( "%d\n",input );
- return EXIT_SUCCESS;
- } /* ---------- end of function main ---------- */
阅读(171) | 评论(0) | 转发(0) |