Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2013, 04:55   #1
Larboss
Недо
Участник клуба
 
Регистрация: 11.08.2011
Сообщений: 1,394
По умолчанию Как получить средние биты 32х битного числа?

Подскажите, как это реализовать.
С помощью программирования можно разбогатеть и изменить мир к лучшему (с) Бьерн Страуструп
Larboss вне форума Ответить с цитированием
Старый 23.05.2013, 07:32   #2
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Если я праивльно понимаю, о чём идёт речь, то интерпретировать это число, как строку и работать далее со строковым представлением числа.
Вадим Мошев вне форума Ответить с цитированием
Старый 23.05.2013, 07:43   #3
Larboss
Недо
Участник клуба
 
Регистрация: 11.08.2011
Сообщений: 1,394
По умолчанию

Я надеялся может быть кто-то знает более хитрый способ с побитовыми смещениями. Хотя может не заморачиваться и вправду использовать строку
С помощью программирования можно разбогатеть и изменить мир к лучшему (с) Бьерн Страуструп
Larboss вне форума Ответить с цитированием
Старый 23.05.2013, 07:43   #4
alexander13
Форумчанин
 
Аватар для alexander13
 
Регистрация: 07.02.2013
Сообщений: 267
По умолчанию

(x & 0x18000) >> 15, не? =)
Μολὼν λαβέ
alexander13 вне форума Ответить с цитированием
Старый 23.05.2013, 07:46   #5
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Так побитовые сдвиги реализуюся операторами shl и shr (влево и вправо соответственно).
x shl <целое число>
x shr <целое число>
Вадим Мошев вне форума Ответить с цитированием
Старый 23.05.2013, 07:50   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
(x & 0x18000) >> 15
Я делаю у себя так:
Код:
function BitsToNum(Source:integer;FromBit:Word=0;CountBit:word=1):integer;
const
 bit:ARRAY[0..31] of DWORD
  = ($1,$2,$4,$8,$10,$20,$40,$80,$100,$200,$400,$800,$1000,$2000,$4000,$8000,
     $10000,$20000,$40000,$80000,$100000,
     $200000,$400000,$800000,$1000000,
     $2000000,$4000000,$8000000,$10000000,$20000000,$40000000,$80000000);
begin
 result:=(bit[CountBit]-1) and (source shr frombit);
end;
Source - Число;
FromBit:Word=0 - с какого бита начать;
CountBit:word=1 - кол-во забираемых бит в выходное числе.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.05.2013, 08:37   #7
Larboss
Недо
Участник клуба
 
Регистрация: 11.08.2011
Сообщений: 1,394
По умолчанию

Stilet, благодарю! Как раз что нужно!
С помощью программирования можно разбогатеть и изменить мир к лучшему (с) Бьерн Страуструп
Larboss вне форума Ответить с цитированием
Старый 23.05.2013, 10:05   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Пользуйся на здоровье )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Даны целые числа р и q. Получить все делители числа q, взаимно простые c г. Владан Паскаль, Turbo Pascal, PascalABC.NET 2 03.12.2012 23:39
Си++ Builder - Определить, установлены ли 5,7,12-14 биты числа А, если установлены, то выполнить ~A KimiRaikkonen Помощь студентам 4 25.05.2010 14:47
Как находят заказы зарубежом ИТ конторы средние и крупные metaros Свободное общение 10 25.07.2009 00:35
Как перевести биты в мегабайты? Юзер7 Свободное общение 7 19.06.2009 17:27
Как получить неповторяющиеся случайные числа Nikkonofun Паскаль, Turbo Pascal, PascalABC.NET 7 15.02.2009 14:22