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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
belii0987
0 / 0 / 1
Регистрация: 17.10.2009
Сообщений: 49
#1

СДВИГ - C++

04.02.2010, 15:18. Просмотров 777. Ответов 1
Метки нет (Все метки)

unsigned int x = 0x1234ABCD; // число которое двигать надо
unsigned int v = 1; // на сколько двигать
x = (x >> v*4) | (x << (32-v*4)); // цикл. вправо

при сдвиге вправо числа X на одну позицию получается D1234ABC

А вот если сдвигать число меньше чем 8 знаков например X=0x123abcd
то при сдвиге получается D0123abc перед 1 появляется ноль .


Как избавиться от этого нуля !!!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2010, 15:18     СДВИГ
Посмотрите здесь:

Побитовый сдвиг C++
Сдвиг C++
Сдвиг курсором C++
C++ 10->2 + сдвиг+инвертация
сдвиг массива C++
Побитовый сдвиг C++
C++ Битовый сдвиг
Побитовый сдвиг C++
Сдвиг Указатели C++
C++ Битовый сдвиг в if()
Побитовый сдвиг C++
Побитовый сдвиг C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
odip
Эксперт С++
7155 / 3295 / 59
Регистрация: 17.06.2009
Сообщений: 14,164
04.02.2010, 21:54     СДВИГ #2
Как избавиться от этого нуля !!!!
unsigned int - 4 байта
значит в hex-виде это число в полном виде выглядит как 0xTTTTTTTT всегда !
Когда ты говоришь что у тебя число 0x123abcd
то на самом деле у тебя 0x0123abcd
И при сдвиге у тебя будет 0xd0123adc в полном соответствии с математикой.

Так что вопрос - а надо ли тебе избавляться от нуля, если он там и должен быть ?
Yandex
Объявления
04.02.2010, 21:54     СДВИГ
Ответ Создать тему
Опции темы

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