Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1003443
  • 博文数量: 150
  • 博客积分: 3017
  • 博客等级: 少校
  • 技术积分: 3829
  • 用 户 组: 普通用户
  • 注册时间: 2011-11-19 14:40
个人简介

Now in Baidu WISE team

文章分类

全部博文(150)

文章存档

2014年(8)

2013年(31)

2012年(111)

分类: Python/Ruby

2012-09-17 21:11:33

对于给定的一个数字,将其对应的二进制的最右边的1改为0("turn off") 例如给你14,二进制为1110,函数处理后为1100,对应为12 ,写出实现这个功能的函数。
简单题,为面试练手。
 
2012.9.9.发现原来做法太sb了,更新C代码。

点击(此处)折叠或打开

  1. my $count = 0;
  2. my $origin = $ARGV[0];
  3. my $input = $origin;
  4. while($input%2 !=1){
  5.  $input /= 2;
  6.  $count++;
  7. }
  8. $origin -= (2**$count);
  9. print $origin;


点击(此处)折叠或打开

  1. /*
  2.  * =====================================================================================
  3.  *
  4.  * Filename: turnoff.c
  5.  *
  6.  * Description:
  7.  *
  8.  * Version: 1.0
  9.  * Created: 10/09/2012 03:36:49 PM
  10.  * Revision: none
  11.  * Compiler: gcc
  12.  *
  13.  * Author: YOUR NAME (),
  14.  * Organization:
  15.  *
  16.  * =====================================================================================
  17.  */
  18. #include <stdlib.h>


  19. #include <stdio.h>

  20. /*
  21.  * === FUNCTION ======================================================================
  22.  * Name: main
  23.  * Description:
  24.  * =====================================================================================
  25.  */
  26.     int
  27. main ( int argc, char *argv[] )
  28. {
  29.     int input = 3;
  30.     int pattern = 1;
  31.     while((input & pattern) == 0){
  32.         pattern = pattern<<1;
  33.     }
  34.     input ^=pattern;
  35.     printf ( "%d\n",input );

  36.     return EXIT_SUCCESS;
  37. }                /* ---------- end of function main ---------- */

阅读(988) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~