首页 > 代码库 > 写一个函数,对于一个给定的整数,如果它的二进制模式从正向看和反向看是一样的,那么返回true;
写一个函数,对于一个给定的整数,如果它的二进制模式从正向看和反向看是一样的,那么返回true;
写一个函数,对于一个给定的整数,如果它的二进制模式从正向看和反向看是一样的,那么返回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;
}
}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。