Форум по программированию Delphi Sources

 


   Сайт  
   Исходники  
   Компоненты  
   Статьи  
   FAQ  
   Поиск по исходникам  
   Футболки  

Вернуться   Форум по программированию Delphi Sources > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 08.01.2017, 15:07
Мих123456 Мих123456 вне форума
Прохожий
 
Регистрация: 07.01.2017
Сообщения: 6
Версия Delphi: delphi 7
Репутация: 10
По умолчанию ближнее число

Подскажите как найти близлежащее число, например есть цифры: 1,2,4,8,16,32,64,128 они будут всегда такими, и например число из переменной 46 , нужно найти ближнее число к 46 которое больше и из большего вычесть 46
Ответить с цитированием
  #2  
Старый 08.01.2017, 15:29
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,326
Версия Delphi: 7, XE5
Репутация: 59584
По умолчанию

Код:
var
  n: Integer;
  m: Integer;
  i: Integer;
begin
  n:=46;
  m:=n;
  i:=0;
  while (n>0) and (i<32) do
  begin
    n:=n shr 1;
    Inc(i);
  end;
  n:=1 shl i;
  Edit1.Text:=IntToStr(n-m);
end;
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Этот пользователь сказал Спасибо NumLock за это полезное сообщение:
Мих123456 (08.01.2017)
  #3  
Старый 09.01.2017, 12:26
x128 x128 вне форума
Новичок
 
Регистрация: 03.02.2010
Сообщения: 58
Репутация: 133
По умолчанию

Я бы вместо цикла взял логарифм, так будет понятней, имхо.
Код:
i:=1 shl trunc(log2(n));
if i<n then i:=i shl 1;
результат:=i-n
Ответить с цитированием
Этот пользователь сказал Спасибо x128 за это полезное сообщение:
M.A.D.M.A.N. (10.01.2017)
Ответ



Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:29.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources", 2004-2017

ВКонтакте   Facebook   Twitter