Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Object Pascal: кроссплатформенные технологии > Разрядность машины


Автор: NewDima 20.2.2006, 02:55
Помогите, пожалуйста, не могу сообразить, как оприделить количество двоичных разрядов в целом числе на конкретной машине.
А именно не вижу алгоритм

Автор: maxim1000 20.2.2006, 03:36
ну, например, так:
Код

function bits:integer;
var
  qqq:integer;
  res:integer;
begin
  qqq:=1;
  res:=0;
  while qqq<>0 do
  begin
    qqq:=qqq*2;
    inc(res);
  end;
  bits:=res;
end;

Добавлено @ 03:37
хотя в Паскале, наверняка, найдется что-то типа оператора sizeof, результат которого можно просто умножить на 8...

Автор: NewDima 20.2.2006, 09:15
Но мы же используем частный случай целого числа, который имеет отношение (по-моему) только к Паскалю. Мы используем integer, тогда почему не longint или extended?

Автор: volvo877 20.2.2006, 10:22
Во-первых, какое отношение Extended имеет к целым числам?

А во-вторых, ЦЕЛОЕ - это именно Integer, LongInt - это уже длинное целое...
Так что используй или вариант, который привел maxim1000, или (если уверен, что байт занимает 8 бит), то SizeOf(Integer)...

Автор: NewDima 20.2.2006, 10:34
Удовлетворен, спасибо smile . Значит я не разбираюсь в определниях и т.д и т.п... придется почитать

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)