Форум программистов, компьютерный форум, киберфорум
Наши страницы
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
Menhel
3 / 3 / 1
Регистрация: 17.12.2012
Сообщений: 25
1

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

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

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

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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2014, 17:25
Ответы с готовыми решениями:

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

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

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

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

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

1
Vtulhu
423 / 377 / 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.03.2014, 00:46

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

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

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


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru