Форум программистов, компьютерный форум CyberForum.ru

Байты_Т - C++

Восстановить пароль Регистрация
 
Leshiy1
 Аватар для Leshiy1
0 / 0 / 0
Регистрация: 03.04.2010
Сообщений: 153
18.06.2010, 18:53     Байты_Т #1
Здравствуйте всем.
Есть число целого типа(16 бит в С), что значит поменять местами младший байт со старшим?
например число 17
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Somebody
2770 / 1583 / 141
Регистрация: 03.12.2007
Сообщений: 4,139
Завершенные тесты: 1
18.06.2010, 19:28     Байты_Т #2
17 = 0x0011
меняем байты местами
0x1100
Leshiy1
 Аватар для Leshiy1
0 / 0 / 0
Регистрация: 03.04.2010
Сообщений: 153
18.06.2010, 19:41  [ТС]     Байты_Т #3
а почему 0011, 17 в двоичной системе другое число
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2293 / 1663 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
18.06.2010, 19:44     Байты_Т #4
Цитата Сообщение от Leshiy1 Посмотреть сообщение
а почему 0011, 17 в двоичной системе другое число
Какая разница. Просто меняешь местами байты и все.
0x0110 = 0x1001
0x1100 = 0x0011
0x1011 = 0x1101
и т.п.
Leshiy1
 Аватар для Leshiy1
0 / 0 / 0
Регистрация: 03.04.2010
Сообщений: 153
18.06.2010, 19:49  [ТС]     Байты_Т #5
транслятор сам переведет число как надо, и потом получатся другие числа. Я правильно понял?
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2293 / 1663 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
18.06.2010, 20:00     Байты_Т #6
Цитата Сообщение от Leshiy1 Посмотреть сообщение
транслятор сам переведет число как надо, и потом получатся другие числа. Я правильно понял?
Просто переставь байты местами, и все.
C++
1
2
unsigned __int16 b = 17;
b = (b << 8) | (b >> 8);
Специфично для MS.
Leshiy1
 Аватар для Leshiy1
0 / 0 / 0
Регистрация: 03.04.2010
Сообщений: 153
18.06.2010, 20:04  [ТС]     Байты_Т #7
a[j] = ((a[j] & 0xff) << 8 +((a[j] & 0xff00) >> 8));

я вот так сделал. Эта же строчка меняет байты местами?
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2293 / 1663 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
18.06.2010, 22:23     Байты_Т #8
Цитата Сообщение от Leshiy1 Посмотреть сообщение
я вот так сделал. Эта же строчка меняет байты местами?
Если это ты сам написал, то зачем спрашиваешь?
Убери лишнее:
C++
1
a[j] = a[j] << 8 | a[j]  >> 8;
a[j] должно иметь беззнаковый тип.
Leshiy1
 Аватар для Leshiy1
0 / 0 / 0
Регистрация: 03.04.2010
Сообщений: 153
19.06.2010, 16:55  [ТС]     Байты_Т #9
Убедиться правильно или нет
Yandex
Объявления
19.06.2010, 16:55     Байты_Т
Ответ Создать тему
Опции темы

Текущее время: 14:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru