Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/65: Рейтинг темы: голосов - 65, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 15.06.2011
Сообщений: 17
1

инвертирование

09.11.2011, 17:52. Показов 12134. Ответов 9
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Подскажите как инвертировать шестнадцатеричное число , но не всё , а первые 8-мь разрядов? Например х=df17?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.11.2011, 17:52
Ответы с готовыми решениями:

Инвертирование текста
Есть текст, например: Beautiful Explicit Simple Complex Я хочу его инвентировать по вертикале...

Инвертирование строк
Надо все строки расположить в алфавитном порядке по убыванию и инвертировать каждую строку. С...

Инвертирование строки
вот попробовал строку инвертировать, она инвертируется,но там еще мусор всякий,скажите как его...

Инвертирование и циклический сдвиг
Если содержание принятого кода может быть представлено в виде 2 в степени n, то выполнить операцию...

9
Заблокирован
09.11.2011, 18:14 2
Цитата Сообщение от olga32 Посмотреть сообщение
Подскажите как инвертировать шестнадцатеричное число , но не всё , а первые 8-мь разрядов? Например х=df17?
инверсия определеная для всех типов одинаково как "~", а чтобы работать с группой разрядов есть сдвиг, и есть еще одно но! инверсия подразумевает знаковые числа, в то время как адреса - беззнаковые, вот пример
C
1
2
3
4
5
6
7
8
int main ()
{
    double x;
    long long int y = &x;
    printf("%x и ~%x\n", y, ~y);
 
    return 0;
}
вывод: bf8b05f0 и ~ffffffff
так что было бы неплохо познакомиться с предметом обсуждения более детально
0
0 / 0 / 0
Регистрация: 15.06.2011
Сообщений: 17
09.11.2011, 18:26  [ТС] 3
Но мне надо инвертировать только 1-е 8-мь разрядов, например было 1110 1010 0011 0011 и должно стать 0001010100110011
0
Заблокирован
09.11.2011, 18:42 4
Цитата Сообщение от olga32 Посмотреть сообщение
Но мне надо инвертировать только 1-е 8-мь разрядов, например было 1110 1010 0011 0011 и должно стать 0001010100110011
вот, теперь начинает проясняться. вам надо инвертировать первые восемь двоичных разрядов. Это просто оператор инверсии "~" переводит код из прямого в обратный, для перевода обратного кода в дополнительный надо к нему добавить 1 (инкремент), а для работы с группой разрядов в вашем случае надо осуществить сдвиг вправо (я же не знаю с каким топом вы работаете, так что длину сдвига вычисляйте сами), отработать, а потом обратно осуществить сдвиг, но уже влево.

Добавлено через 8 минут
и не забывайте что "первый" разряд (считаем слева) - это знаковый разяд.
0
0 / 0 / 0
Регистрация: 15.06.2011
Сообщений: 17
09.11.2011, 18:49  [ТС] 5
Ну напишите пожалуйста на примере вот число 0xdf17
0
Заблокирован
09.11.2011, 19:03 6
Цитата Сообщение от olga32 Посмотреть сообщение
Ну напишите пожалуйста на примере вот число 0xdf17
а вам знак сохранять надо?
0
0 / 0 / 0
Регистрация: 15.06.2011
Сообщений: 17
09.11.2011, 19:11  [ТС] 7
У меня беззнаковое число unsignet Shot
0
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.11.2011, 19:22 8
Инвертирование первых 8 младших бит
C++
1
2
3
 
    unsigned short x = 12345, y;
   y = (~(x & 0xFF) & 0xFF) | (x & ~0xFF);
Инвертирование первых 8 старших бит
C++
1
2
    unsigned short x = 12345, y;
    y = (~(x & 0xFF00) & 0xFF00) | (x & ~0xFF00);
2
Заблокирован
09.11.2011, 21:11 9
y = x ^ 0xFF00
2
Эксперт С++
4267 / 2241 / 203
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
09.11.2011, 21:59 10
Цитата Сообщение от alkagolik Посмотреть сообщение
y = x ^ 0xFF00
Точно, молодец! Совсем забыл, что
x^1 = ~x
x^0 = x
0
09.11.2011, 21:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.11.2011, 21:59
Помогаю со студенческими работами здесь

Инвертирование строк в программе.
Внемлю вашей помощи, форумчане. Необходимо: "7. Открыть файл, имя которого задается с...

Инвертирование и циклический сдвиг
Задание: Если содержание принятого кода может быть представлено в виде 2 в степени n, то выполнить...

Инвертирование слов в строке
напишите пожалуйста программу которые выводить буквы наоборот например я написал super computer a а...

Инвертирование регистра символов
char str; cin.getline(str,n); for(int i=0;i<strlen(str);i++){ if(islower(str)){...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru