Возвести в степень



У программиста спрашивают:
- Hе помнишь, сколько будет два в четвеpтой?
- (без запинки) Шестнадцать.
- А шестнадцать в четвеpтой?
- (без запинки) Шестьдесят пять тысяч пятьсот тpидцать шесть.
- Вот голова, ну ты даешь!!! Hу, а тpи в четвеpтой?
- (после паузы) Hе помню точно. Дpобное число получается.

Чтобы возвести 2 в нужную степень можно создать цикл:


a := 1;
for i := 1 to 20 do
a := a * 2;

Можно воспользоваться функциями Power, IntPower или LdExp из модуля Math, но есть способ быстрее. Можно сдвигать двоичные порядки на N порядков. Это приводит к умножению или делению числа на 2 в степени N. При этом обязательно работать с целочисленным типом.


procedure TForm1.Button1Click(Sender: TObject);
var
Res, Exponent: integer;
begin
Exponent := 10;
Res := 10 shl Exponent;
Form1.Caption := IntToStr(Res) + #32;
Res := Res shr Exponent;
Form1.Caption := Form1.Caption + IntToStr(Res);
end;


Далее: Вычисление автокорреляционной функции »»