Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 31, средняя оценка - 4.81
olga32
0 / 0 / 0
Регистрация: 15.06.2011
Сообщений: 17
#1

инвертирование - C++

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

Подскажите как инвертировать шестнадцатеричное число , но не всё , а первые 8-мь разрядов? Например х=df17?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2011, 17:52
Здравствуйте! Я подобрал для вас темы с ответами на вопрос инвертирование (C++):

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

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

Инвертирование строки - C++
вот попробовал строку инвертировать, она инвертируется,но там еще мусор всякий,скажите как его убрать? #include <iostream> #include...

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

Инвертирование содержимого файла - C++
Здравствуйте! Скажите как модно реализовать инвертирование содержимого файла! Причем нужно инвертировать не по одному символу, а целыми...

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

9
alkagolik
Заблокирован
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
olga32
0 / 0 / 0
Регистрация: 15.06.2011
Сообщений: 17
09.11.2011, 18:26  [ТС] #3
Но мне надо инвертировать только 1-е 8-мь разрядов, например было 1110 1010 0011 0011 и должно стать 0001010100110011
0
alkagolik
Заблокирован
09.11.2011, 18:42 #4
Цитата Сообщение от olga32 Посмотреть сообщение
Но мне надо инвертировать только 1-е 8-мь разрядов, например было 1110 1010 0011 0011 и должно стать 0001010100110011
вот, теперь начинает проясняться. вам надо инвертировать первые восемь двоичных разрядов. Это просто оператор инверсии "~" переводит код из прямого в обратный, для перевода обратного кода в дополнительный надо к нему добавить 1 (инкремент), а для работы с группой разрядов в вашем случае надо осуществить сдвиг вправо (я же не знаю с каким топом вы работаете, так что длину сдвига вычисляйте сами), отработать, а потом обратно осуществить сдвиг, но уже влево.

Добавлено через 8 минут
и не забывайте что "первый" разряд (считаем слева) - это знаковый разяд.
0
olga32
0 / 0 / 0
Регистрация: 15.06.2011
Сообщений: 17
09.11.2011, 18:49  [ТС] #5
Ну напишите пожалуйста на примере вот число 0xdf17
0
alkagolik
Заблокирован
09.11.2011, 19:03 #6
Цитата Сообщение от olga32 Посмотреть сообщение
Ну напишите пожалуйста на примере вот число 0xdf17
а вам знак сохранять надо?
0
olga32
0 / 0 / 0
Регистрация: 15.06.2011
Сообщений: 17
09.11.2011, 19:11  [ТС] #7
У меня беззнаковое число unsignet Shot
0
Thinker
Эксперт С++
4228 / 2202 / 150
Регистрация: 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
alkagolik
Заблокирован
09.11.2011, 21:11 #9
y = x ^ 0xFF00
2
Thinker
Эксперт С++
4228 / 2202 / 150
Регистрация: 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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.11.2011, 21:59
Привет! Вот еще темы с ответами:

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

Инвертирование группы бит. - C++
Помогите с программой, пожалуйста. Дана переменная типа long. Написать функцию, которая инвертирует группу из N разрядов переменной,...

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

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


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

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