Sos! Help! Please!

За вознаграждение или нахаляву (если повезёт)

Модераторы: Хыиуду, MOTOCoder, Medved, dr.Jekill

Ответить
tota
Сообщения: 5
Зарегистрирован: 12 янв 2007, 18:59

12 янв 2007, 19:12

//Задание на побитовый сдвиг выяснить является ли двоичная запись числа //полиндромoм (отредактированно куратором Romeo) (перевёртышем)
#include<stdio.h>
#include<conio.h>
void main()
{long int a;
int i, n, j, u, k, c, b;
printf("Введите натуральное число : "); scanf("%lu",&a);
n=(a>255)?(a>65535)?31:15:7;
for (i=n;i>=0;i--)
{printf("%d",(a>>i)&0x1);
}
for (u=n;((a>>u)&1)!=1&&u!=-1;u--);
++u;
printf(" dv= %u ",u);
for (i=(u-1);i>=0;i--)
{printf("%d",(a>>i)&0x1);
}
printf(" Биты числа в прямом порядке : ");
for (i=(u-1);i>=0;i--)
printf("%d",(a>>i)&0x01);
printf("\n");
printf("Биты числа в обратном порядке: ");
for (i=0;i<=(u-1);i++)
printf("%d",(a>>i)&0x01);
printf("\n\n");
k=0;
printf(" do u= %d ",u);
printf(" do (u-1)/2= %d \n \n",(u-1)/2);
b=a>>(u-1); printf(" b= %d ",b);
c=a<<(u-1); printf(" c= %d ",c);
printf(" \n");
j=((u-1)/2);
for (i=((u-1)/2);i>=0;i--)

// for (j=((u-1)/2);j<=u;j++)
{j++;

printf(" a>>i %d ",(a>>i)&0x01);
printf(" a>>j %d ",(a>>j)&0x01);
printf(" k= %d ",k);
printf(" (u-1)/2= %d ",(u-1)/2);
printf(" j= %d",j);
printf(" \n ");
if((a>>i)==(a>>j))
{k++;
printf(" a>>i %d ",(a>>i)&0x01);
printf(" a>>j %d ",(a>>j)&0x01);
printf(" k= %d ",k);
printf(" (u-1)/2= %d ",(u-1)/2);
printf(" yes ");
printf(" \n ");
}
else
printf(" no");
}
if(k==((u-1)/2))
printf(" yes123");
else
printf(" not");

for (i=((u-1)/2);i>=0;i--)

for (j=((u-1)/2);j<=u;j++)
{//j++;


if((a>>i)&&(a>>j))
printf(" yes z");
else
printf(" not z");
}
getch();
}
Аватара пользователя
Romeo
Сообщения: 3091
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

12 янв 2007, 20:46

Перемещено из "c и C++"
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Ответить