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

В числе 15 поменять местами младший и старший байты - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Написать программу ввода координат двух точек и вычисления расстояния между ними http://www.cyberforum.ru/cpp-beginners/thread113882.html
Практическая работа №9 ТЕМА: «Программирование структур и объединений в С++» Цель: изучить работу структур и объединений в С++. Тип урока: практическая работа. Количество часов: 4. Необходимое программное обеспечение: Visual Studio 6 Ent, MS Word. Необходимые сведения из теории:  структуры в С++;  объединения в С++; Упражнения:
C++ потоковый ввод всем привет! ситуация такая: при выполнении считываются только R2 и h, не могу понять, в чем дело. dev-c++ просто выдает "step t = нажмите любую клавишу для выхода", а если запускать через MS Visual C++ выдает ошибку "damage after normal block at ". в чем дело? помогите, пожалуйста, код-то простой вроде. #include <iostream> #include <stdlib.h> using namespace std; http://www.cyberforum.ru/cpp-beginners/thread113878.html
Текст C++
Привет всем. Помогите с задачей. Дан текст словами, разделенные пробелом. Выдать этот текст по словам. Заранее огромнейшее спасибо
Квадратный корень C++
как вычислить корень из числа в консольном виде , я имею ввиду код для консольного приложения
C++ 2 вопроса про скорость - указатели и строки http://www.cyberforum.ru/cpp-beginners/thread113848.html
Здравствуйте. Скажите, а работа с большими массивами с помощью указателей происходит быстрее (при передаче указателя в функцию), чем если эти же массивы объявлять глобально и работать из функций как с глобальными? И второй вопрос. Что быстрее - встроенные методы класса string или аналогичные самописные (например, compare, length, find)? Спасибо.
C++ Найти сумму и число тех элементов массива, которые попадают на заданный отрезок Помогите написать программу по теме: одномерные массивы. Найти сумму и число тех элементов заданного массива X1,X2, … ,Xn, которые попадают на заданный отрезок. подробнее

Показать сообщение отдельно
Kastaneda
Форумчанин
Эксперт С++
4518 / 2860 / 228
Регистрация: 12.12.2009
Сообщений: 7,268
Записей в блоге: 2
Завершенные тесты: 1
04.07.2010, 07:14
Код получился не универсальный, как хотелось бы.(если int будет 2 байта, то результат будет не правильный) Я это заметил уже после того как код выложил, пробовал переписать, но получился быдлокод) Но при int==4 байта(чаще всего так и есть) - все правильно.
Главная часть кода основывается на смещении и логических опреациях "И" и "ИЛИ", попробую объяснить "на пальцах" Сначало высчитываем n (размер (int-1)*8 - в битах), оно нужно для сдвигов влево и вправо таким образом, чтоб крайний слева(справа) байт стал крайним справа(слева). Далее есть число (hex) 12345678, двигаем влево, получается 78000000, двигаем вправо, получается 00000012. Делаем "ИЛИ" этих двух чисел, получается 78000012, таким образом мы поменяли местами крайний левый и крайний правый байты, нужно заполнить середину. Для этого нужно подготовить маску для операции "И", для этого используем цикл (вот он то как раз не универсален, т.к. если int будет равен 2 байта, то маска получится FF00, что не есть правильно), при int = 4 байта получаем маску 00FFFF00 ( в двоичном виде 000000001111111111111111111111111111111100000000)), делаем VAL & маска, получается 00345600, т.е. середина нашего числа, а крайние байты = 0. Ну и последние это 78000012 "ИЛИ" 00345600, получается 78345612. Вот собственно и все)
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru