|
#1
|
|||
|
|||
ближнее число
Подскажите как найти близлежащее число, например есть цифры: 1,2,4,8,16,32,64,128 они будут всегда такими, и например число из переменной 46 , нужно найти ближнее число к 46 которое больше и из большего вычесть 46
|
#2
|
||||
|
||||
Код:
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
|
|||
|
|||
Я бы вместо цикла взял логарифм, так будет понятней, имхо.
Код:
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)
|