Поразрядная обработка целых чисел

Тема в разделе "C и С++ FAQ", создана пользователем NicePlant, 24 окт 2010.

Статус темы:
Закрыта.
  1. NicePlant

    NicePlant Member

    Регистрация:
    3 окт 2010
    Сообщения:
    14
    Симпатии:
    0
    Подскажите в чем ошибка???
    Задание :
    "В каждом байте длинного целого числа N поменять местами двоичные разряды в зеркальном порядке."


    #include <stdio.h>
    void PrintBit(unsigned int a)
    {

    int len = sizeof(int)*8;
    unsigned int fl=1 << (len-1);
    while (len>0)
    {
    if ((len % 4) == 0) printf(" ");
    if ((a & fl) != 0) printf("1");
    else printf("0");
    len--;
    fl >>=1;
    }
    printf("\n");
    }

    int main()
    {

    unsigned int a;
    printf("Vvedite chislo: ");
    scanf("%d",&a);
    unsigned int b=0;
    unsigned int temp=a;
    int len = sizeof(int);
    unsigned char *ta=(unsigned char *)&temp;
    unsigned char *tb=(unsigned char *)&b;
    int i;

    while (len>0)
    {
    i=8;
    while (i>0)
    {
    (*tb) <<=1;
    (*tb)+=((*ta) & 1);
    (*ta) >>=1;
    i--;
    }
    len--;
    ta++;
    tb++;
    }
    printf("Dvouchnoe predstavlenue chisla:\n");
    printf("Do: ");
    PrintBit(a);
    printf("Posle: ");
    PrintBit:)mellow:;
    return 0;
    }
     
Загрузка...
Похожие Темы - Поразрядная обработка целых
  1. kolka
    Ответов:
    6
    Просмотров:
    250
  2. anna
    Ответов:
    9
    Просмотров:
    878
  3. FaRReLL
    Ответов:
    0
    Просмотров:
    865
  4. crow1986
    Ответов:
    8
    Просмотров:
    1.869
  5. Dazzel
    Ответов:
    1
    Просмотров:
    947
Статус темы:
Закрыта.

Поделиться этой страницей