码迷,mamicode.com
首页 > 其他好文 > 详细

写一个函数,对于一个给定的整数,如果它的二进制模式从正向看和反向看是一样的,那么返回true;

时间:2014-07-28 21:20:04      阅读:356      评论:0      收藏:0      [点我收藏+]

标签:blog   http   2014   for   代码   amp   log   rom   

写一个函数,对于一个给定的整数,如果它的二进制模式从正向看和反向看是一样的,那么返回true;也就是实现这样一个函数
boolean isPalindrome(int x);

分析一下,该题目主要是通过移位来实现,二进制模式从正向看和反向看是一样的,说明这个二进制数两边是对称的,

画个图看看:

bubuko.com,布布扣

代码如下:

boolean isPalindrome(int x)
{
 int flag = 1,i,j,temp;
    while(1){
        if(num&(0x1<<flag)){
            flag++;
        }else{
            break;
        }
    }
    printf("%dbits\n",flag);
      
    if(flag%2){
        i = flag/2+1;
    }else{
        i = flag/2; 
    }
    for(j=0;j<i;j++){
        temp |= ((num&(1<<j))<<(flag-2*j-1))|((num&(1<<(flag-j-1)))>>(flag-2*j-1));
    }
    if(temp == num){
        return TRUE;
    }else{
        return FALSE;
    }
}

写一个函数,对于一个给定的整数,如果它的二进制模式从正向看和反向看是一样的,那么返回true;,布布扣,bubuko.com

写一个函数,对于一个给定的整数,如果它的二进制模式从正向看和反向看是一样的,那么返回true;

标签:blog   http   2014   for   代码   amp   log   rom   

原文地址:http://www.cnblogs.com/chenyuejun/p/3873177.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!