Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 18.06.2010, 19:21   #1
Leshiy1
Форумчанин
 
Аватар для Leshiy1
 
Регистрация: 24.09.2009
Сообщений: 104
По умолчанию Байты_Т

Здравствуйте всем.
Есть число целого типа(16 бит в С), что значит поменять местами младший байт со старшим?
например число 17
Leshiy1 вне форума
Старый 18.06.2010, 22:29   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Младший байт - первые 8 бит числа, старший - вторые.
Число 17 в двоичной системе можно записать как 10001. Или же, если указать все 16 бит - 0000000000010001.
Если поменять местами младший и старший байты, получится 0001000100000000, что в десятичной системе соответствует числу 4352.

Ну и примерчик:
Код:
#include <conio.h>
#include <stdio.h>

void bits(short a, int k)
{
 int i;
 for(i=k-1; i>=0; i--)
  printf("%d",a&(1<<i)?1:0);
 printf("\n"); 
}

int main()
{
 unsigned short num=17;
 char a,b;
 int k;
 
 a = *((char*)(&num)); // младший байт
 b = *((char*)(&num)+1); // старший байт
 printf("a: ");
 bits(a, 8);
 printf("b: ");
 bits(b, 8);
 
 printf("number:     ");
 bits(num,16);  
 
 *((char*)(&num)) = b;   // меняем местами
 *((char*)(&num)+1) = a;

 printf("new number: ");
 bits(num,16);
 printf("%u\n",num);
  
 getch();
 return 0;
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума
Старый 19.06.2010, 16:39   #3
Leshiy1
Форумчанин
 
Аватар для Leshiy1
 
Регистрация: 24.09.2009
Сообщений: 104
По умолчанию

Спасиба большое
Leshiy1 вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц