您的位置:首页 > 产品设计 > UI/UE

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

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

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

画个图看看:



代码如下:

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;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐