写一个函数,对于一个给定的整数,如果它的二进制模式从正向看和反向看是一样的,那么返回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;
}
}
写一个函数,对于一个给定的整数,如果它的二进制模式从正向看和反向看是一样的,那么返回true;,布布扣,bubuko.com
时间: 2024-10-03 09:16:28