1. Получи 30.000 рублей. Для получения денег необходимо принять участие в конкурсе авторов codeby. С условиями и призами можно ознакомиться на этой странице ...

    Внимание! Регистрация авторов на конкурс закрыта.

    Скрыть объявление
  2. Требуются разработчики и тестеры для проекта codebyOS. Требования для участия в проекте: Знание принципов работы ОС на базе Linux; Знание Bash; Крайне желательное знание CPP, Python, Lua; Навыки системного администрирования. Подробнее ...

    Скрыть объявление

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

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

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

    NicePlant Member

    Репутация:
    0
    Регистрация:
    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;
    }
     
Загрузка...
Статус темы:
Закрыта.

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