С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
PEndos
0 / 0 / 0
Регистрация: 11.05.2013
Сообщений: 93
1

Дополнительный код hex числа

20.10.2017, 12:27. Просмотров 329. Ответов 6
Метки нет (Все метки)

Есть int переменная ,которую я перевожу в hex отрицательное число FFFFFFFFFF0444. Мне нужно убрать все F. Как это можно реализовать ?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.10.2017, 12:27
Ответы с готовыми решениями:

Дополнительный код в double
Доброго всем дня! Подскажите, пожалуйста, как реализовать в коде...

Как конвертировать целые значения в дополнительный код?
Как в C# сделать, чтобы введенные пользователем целые значения(знаковые и...

Как получить HEX код файла *.jpg
Доброго времени суток! Передо мной стала такая вот странная задача: необходимо...

Как вбить hex код символа в регулярное выражение?
Regex RX = new Regex("(?<val>)(?<dig>{0,9})");В первое поле (определяемое...

Конвертация отрицательного dec числа в hex
есть функция которая преобразует не отрицательное int в строку hex public...

6
OwenGlendower
Супер-модератор
Эксперт .NET
9703 / 8445 / 3615
Регистрация: 17.03.2014
Сообщений: 16,910
Записей в блоге: 1
20.10.2017, 14:50 2
PEndos, если убрать все F, то число перестанет быть отрицательным. Если это что тебя нужно, то просто поменяй знак числа на + перед преобразованием.
0
PEndos
0 / 0 / 0
Регистрация: 11.05.2013
Сообщений: 93
20.10.2017, 15:20  [ТС] 3
FFFFFFFFFFFF0444 = -64444
FBBC = 64444
а нужно чтобы оставалось 444 = 1092
0
OwenGlendower
Супер-модератор
Эксперт .NET
9703 / 8445 / 3615
Регистрация: 17.03.2014
Сообщений: 16,910
Записей в блоге: 1
20.10.2017, 22:34 4
PEndos, возможно такой вариант подойдет. Не уверен что он самый эффективный, но задачу вроде решает.
C#
1
2
3
int x = -64444;
int n = clz4((uint)-x);
int y = x & ~(int.MinValue >> clz4((uint)-x)); // Результат
C#
1
2
3
4
5
6
7
8
9
10
11
12
static byte[] clz_table_4bit = new byte[16]{ 4, 3, 2, 2, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0 };
 
/// <summary>Count Leading Zeroes</summary>
static int clz4(uint x)
{
    int n = 0;
    if ((x & 0xFFFF0000) == 0) {n  = 16; x <<= 16;}
    if ((x & 0xFF000000) == 0) {n +=  8; x <<=  8;}
    if ((x & 0xF0000000) == 0) {n +=  4; x <<=  4;}
    n += (int)clz_table_4bit[x >> (32-4)];
    return n;
}
1
PEndos
0 / 0 / 0
Регистрация: 11.05.2013
Сообщений: 93
23.10.2017, 10:31  [ТС] 5
Поясни пожалуйста в общем по коду , выдает ошибки ,
2 ст - clz4 не существует в текущем контексте
5 ст - модификатор static недопустим для этого элемента
14ст - clz_table_4bit не существует.
Спасибо.
0
OwenGlendower
Супер-модератор
Эксперт .NET
9703 / 8445 / 3615
Регистрация: 17.03.2014
Сообщений: 16,910
Записей в блоге: 1
23.10.2017, 10:48 6
PEndos, я отредактировал прошлое сообщение - разделил код на две части. Первая идет в функцию где необходимо выполнить твою операцию. Вторая это код метода clz4.
0
PEndos
0 / 0 / 0
Регистрация: 11.05.2013
Сообщений: 93
24.10.2017, 11:39  [ТС] 7
Да , спасибо все заработало. Только непонятен сам метод. Как происходит сдвиг разряда. работает ли он для задачи когда нужно убрать разряды не с начала , а с конца чилса (111AAAA, убрать AAAA). Спасибо.

Добавлено через 18 минут
можно просто удалить последние 4 байта (AAAA)?
0
24.10.2017, 11:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.10.2017, 11:39

Регулярные выражения: проверка HEX числа в строке
Как проверить, что в строке только 0-9 и A-F?

Преобразование числа в биты, а затем биты в числа (hex)
Преобразование числа в биты, а затем биты в числа (hex). Заранее спасибо!

Intel Hex: как быть, если нельзя представить шестнадцатеричную строку в виде простого целого числа
Не нашел библиотеку для работы с Intel Hex, нужно модифицировать файлы этого...


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

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

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