Как я могу получить/установить отдельные биты в плавании?

Как сказанный Обжимный пресс, Вы не можете освободить его; код, вызывающий функцию, которая возвращает объект, ответственен за уничтожение его.

Это - плохой дизайн кода, между прочим, поскольку он делает его путающий относительно того, кто выделяет и освобождает. Намного лучший способ сделать это состоял бы в том, чтобы сделать, чтобы вызывающая сторона создала объект и передала его в функции. Тем путем код, который создает его также, освобождает его. Что-то вроде этого:

var
  SL: TStringList;
begin
  SL := TStringList.Create;
  try
    ProcToFillStringList(SL);
    //Do something with populated list
  finally
    SL.Free;
  end;
end;

// Note I've made the parameter a TStrings and not a TStringList. This allows
// passing a TMemo.Lines or a TListBox or TComboBox Items as well.
procedure ProcToFillStringList(const SList: TStrings);
  // Do whatever populates the list with SList.Add()
end;

Теперь нет никакого беспорядка по тому, кто делает то, что - тот же код, который создает объект, ответственен за освобождение его. И код, IMO, является намного более четким считать и поддержать.

6
задан Community 9 August 2014 в 18:31
поделиться

5 ответов

I есть целое число, которое я устанавливаю отдельные биты для и я хочу распечатать эквивалент IEEE754 с плавающей запятой одинарной точности.

Используйте для этого intBitsToFloat () .

12
ответ дан 8 December 2019 в 02:46
поделиться

Java не предоставляет никакого способа обрабатывать значение как другое значение на уровне необработанных битов - никаких объединений, ничего вроде reinterpret_cast . Однако для вашего конкретного случая обработки float как int и наоборот, вы можете использовать java.lang.Float.floatToIntBits и intBitsToFloat ] методы.

5
ответ дан 8 December 2019 в 02:46
поделиться

Если вас интересует доступ к представлению числа с плавающей запятой на битовом уровне, java.lang.Double содержит метод для этого (doubleToLongBits и т. Д.)

Объединение между типами указателей ( или между указателями и их числовым представлением) открыли бы дыры в системе типов, поэтому это строго невозможно.

4
ответ дан 8 December 2019 в 02:46
поделиться

Заменители отсутствующих конструкций C

Разработчики программирования на Java язык решил опустить союз построить, потому что есть много лучший механизм для определения единственного тип данных, способный представлять объекты различных типов: подтипы. А размеченный союз на самом деле просто бледная имитация иерархии классов.

Включает примеры.

9
ответ дан 8 December 2019 в 02:46
поделиться

Некоторые полезные статьи и ответы на вопросы по этой теме:

Типы объединения в Java?

Заменители отсутствующих конструкций C

3
ответ дан 8 December 2019 в 02:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: