Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.65/34: Рейтинг темы: голосов - 34, средняя оценка - 4.65
3 / 3 / 1
Регистрация: 17.12.2012
Сообщений: 25
1

Поменять местами старший и младший байты в записи числа

30.03.2014, 17:25. Показов 6884. Ответов 1
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!
Есть такая задача: дано целое число, поменять местами старший и младший байты в его записи и вывести что получится. Обязательное условие - использовать сдвиги.
Я сделал следующее:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int main()
{
  unsigned int x;
  
                                  
  FILE *inf ;                           
  inf = fopen("in.txt", "rt");         
                           
    fscanf (inf,"%i ",&x);
  
  x = ( (x >> 8) | (x << 8) );
  
  printf("%10i \n", x); 
 
 
  getchar();                            
  return 0;                           
}
Какие-то тесты проходит, какие-то нет; подскажите пожалуйста, в чём ошибка?
Спасибо!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
30.03.2014, 17:25
Ответы с готовыми решениями:

Для заданного целого А поменять местами старший и младший байты
Помогите с заданием: Для заданного целого А поменять местами старший и младший байты. Вывести...

В каждом четном числе поменять местами младший байт со старшим
В каждом четном числе поменять местами младший байт со старшим. После замены определить количество...

Поменять местами первую и последнюю цифры в записи числа
Дано натуральное число n. Поменять местами первую и последнюю цифры в записи числа. Подсчитать...

В одномерном массиве в каждом нечетном числе поменять местами младший байт со старшим
Здравствуйте всем Задача такая: В одномерном массиве в каждом нечетном числе поменять местами...

1
430 / 384 / 200
Регистрация: 12.08.2011
Сообщений: 1,610
31.03.2014, 00:46 2
Во-первых, надо использовать не int, а long, потому что разрядность int в общем случае неизвестна.
Во-вторых, попробуй проделать те операции, которые ты придумал, в уме или на бумажке. Ерунда какая-то.
В-третьих, не пытайся сразу писать сложные выражения. Расписывай их как можно подробней. Как-то так:

C
1
2
3
4
unsigned long high8_to_low8 = (x >> 24) & 0xFF;
unsigned long low8_to_high8 = (x & 0xFF) << 24;
unsigned long middle16 = x & 0xFFFF00;
x = low8_to_high8 + middle16 + high8_to_low8;
0
31.03.2014, 00:46
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.03.2014, 00:46
Помогаю со студенческими работами здесь

Поменять местами первый и четвертый байты, используя операции с указателями
У меня имеется условие int a=5,*pi=&amp;a; Требуется в этом самом pi поменять местами первый и...

Как получить младший байт и его старший бит
Подскажите как получить младший байт и его старший бит. И как сделать замену старшего бита младшего...

Старший бит старшего байта поменять местами с младшим битом младшего байта
Ребят помогите прогу доработать. Задача такая: В одномерном массиве чисел целого типа (16 бит)...

Поменять местами первую и последнюю записи в файле
Структура имеет вид: номер читательского билета, автор книги, название, дата заказа. Вывести на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru