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

C для начинающих

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

В 16-ричном числе выделить маской старший разряд и заменить его предопределенным числом - C (СИ)

19.06.2015, 23:49. Просмотров 415. Ответов 5
Метки нет (Все метки)

Как в 16ричном числе выделить маской старший разряд и заменить его предопределенным числом? То есть есть
0x0000c1a5 и число 8, нужно чтобы было 0x000081a5.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.06.2015, 23:49
Я подобрал для вас темы с готовыми решениями и ответами на вопрос В 16-ричном числе выделить маской старший разряд и заменить его предопределенным числом (C (СИ)):

В длинном целом числе поменять местами нулевой разряд с первым разрядом - C (СИ)
Здраствуйте! Подскажите пожалуйста. Такая задача: В длинном целом числе поменять местами нулевой разряд с первым разрядом, второй разряд с...

Каждое из чисел заменить числом, которое образуется при записи его десятичных цифр в обратном порядке - C (СИ)
Каждое из заданных натуральных чисел заменить числом, которое образуется при записи его десятичных цифр в обратном порядке

Для целого числа А выделить старший байт и поставить его на место младшего байта. старший байт при этом обнулить. - C++
Помогите пожалуйста, вообще не могу понять как делать следующее...Еще и в программе CODE BLOCKS препод почему именно эту программу...

Найдите максимальный разряд в данном числе и его номер - Delphi
Разветляющейся стуктура. Дано целое число а. Найдите максимальный разряд в этом числе и его номер. Помогоите решить пожалуйста пришлите...

N-значное число, вывести младший и старший разряд - C++
Составить программу. Дано n-значное число longint. Произвести с ним действия согласно варианту ( 17 ) Вывести только цифры самого...

Найти максимальную цифру и записать в старший разряд - Turbo Pascal
Дано натуральное трехзначное число. В записи этого числа найти максимальную цифру и записать ее в старший разряд числа.

5
Ethereal
3015 / 1288 / 166
Регистрация: 17.02.2013
Сообщений: 2,192
19.06.2015, 23:59 #2
Разряд - это один бит. И он может быть только 0 или 1.

Добавлено через 2 минуты
Ты говоришь про тетраду, а не про разряд.
Сначала занули тетраду посредством
x &= 0xFFFF0FFF ;
а потом вставь в нее восьмерку
x |= 0x00008000 ;
0
xfnii
0 / 0 / 0
Регистрация: 19.11.2014
Сообщений: 16
20.06.2015, 00:04  [ТС] #3
Добавлено через 2 минуты
Цитата Сообщение от Ethereal Посмотреть сообщение
Разряд - это один бит. И он может быть только 0 или 1.

Добавлено через 2 минуты
Ты говоришь про тетраду, а не про разряд.
Сначала занули тетраду посредством
x &= 0xFFFF0FFF ;
а потом вставь в нее восьмерку
x |= 0x00008000 ;
Понятно, но как определить позицию 0? Число может быть разных размеров.
0
Ethereal
3015 / 1288 / 166
Регистрация: 17.02.2013
Сообщений: 2,192
20.06.2015, 00:40 #4
Тебе надо заменить именно старшую тетраду заранее неизвестных размеров числа ?

Добавлено через 9 минут
Если так, то
Assembler
1
2
3
4
    sh = sizeof(x) ;     // размер x в байтах
    sh = 8*sh - 4 ;      // сдвиг старшей тетрады у x в битах
    x &= ~(0xF << sh) ;  // занулили старшую тетраду
    x |= 8 << sh ;       // втыкаем в нее восьмерку
0
xfnii
0 / 0 / 0
Регистрация: 19.11.2014
Сообщений: 16
20.06.2015, 00:54  [ТС] #5
Нет, смотри. Есть задач: мы получаем на ввод длинное целое неотрицательное число(unsigned int) нужно в его 16ричном представлении поменять старшую цифру максимальной из цифр числа, а младшую – минимальной. То есть замена младшую цифру легко, а вот как старшую я не знаю.
0
Ethereal
3015 / 1288 / 166
Регистрация: 17.02.2013
Сообщений: 2,192
20.06.2015, 10:47 #6
C
1
2
3
4
5
6
7
    i = 8*sizeof(x) ;
    do {
      i -= 4 ;
      if ((x>>i & 0xF)) break ;
    } while (i) ;
    x &= ~(0xF<<i) ;  // занулили тетраду
    x |= 8<<i ;       // втыкаем в нее восьмерку
0
20.06.2015, 10:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.06.2015, 10:47
Привет! Вот еще темы с ответами:

В записи заданного числа найти максимальную цифру и записать ее в старший разряд - Turbo Pascal
Не правильно выводит, в чем ошибка? Суть программы в том что бы ввести трехзначное число и в записи этого числа найти максимальную цифру и...

Сумма элементов ниже главной диагонали матрицы, старший разряд которых равен X - Turbo Pascal
Задан двумерный массив целых чисел размерности NхN. Найти сумму элементов массива расположенных ниже главной диагонали в записи которых в...

Как обозначить разряд десятки в трехзначном числе (VBA) - VBA
Дано трехзначное число, любое. Нужно каждый разряд обозначить через переменную, к примеру XYZ. Я обозначил X (сотни) и Z (единицы) так:...

Нужно заменить значения в 16-ричном коде - Delphi
Передо мной стоит задача, мне надо в определённом файле, при нажатии на кнопку заменить несколько байтов, как это сделать я не имею не...


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

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

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