Почему IEEE 754 решил выделить 23 бита для manitssa, а не 22 или 24 (и т. Д.)? [Дубликат]

Здесь я предоставляю 2 примера для чтения целочисленного значения со стандартного ввода

Пример 1

  import java.util.Scanner;  public class Maxof2 {public static void main (String args []) {// принимает значение как аргумент командной строки.  Сканер in = новый сканер (System.in);  System.out.printf ("Enter i Value:");  int i = in.nextInt ();  System.out.printf ("Enter j Value:");  int j = in.nextInt ();  if (i & gt; j) System.out.println (i + "i больше, чем" + j);  else System.out.println (j + "больше, чем« + i);  }}  

Пример 2

  public class ReadandWritewhateveryoutype {public static void main (String args []) throws java.lang.Exception {System.out.  printf («Эта программа используется для чтения и записи того, что когда-либо вы печатаете \nType quit to Exit at any Moment \n \n");  java.io.BufferedReader r = new java.io.BufferedReader (новый java.io.InputStreamReader (System.in));  Строка привет;  while (! (hi = r.readLine ()). startsWith ("quit")) System.out.printf ("\nВы набрали:% s \n", hi);  }}  

Я предпочитаю первый пример, это легко и понятно. Вы можете компилировать и запускать программы JAVA онлайн на этом веб-сайте: http://ideone.com

2
задан Stephen Canon 26 September 2012 в 12:35
поделиться

2 ответа

Для 32-битных поплавков IEEE аргументация состоит в том, что точность должна быть не менее хорошей, чем 24-битная фиксированная точка.

Почему именно 24 бита, я не знаю, но кажется разумный компромисс.

Я полагаю, что хороший «круглый» номер (mantissa + sign = 3 bytes, exponent = 1 byte) также может сделать реализации более эффективными.

0
ответ дан Johan Kotlinski 15 August 2018 в 16:03
поделиться
  • 1
    Разделение вещей на байты чрезвычайно помогает в реализации. Разделение вещей как 8 + 56 или 16 + 48 также было бы с реализацией, но 8-битный показатель был бы немного на малой стороне, а 16-разрядный показатель представлял бы потерю бит. – supercat 7 May 2014 в 20:45

Согласно этому интервью с Will Kahan , они были основаны на форматах VAX F и G эпохи.

Конечно, что doesn «Ответ на вопрос о том, как эти форматы были выбраны ...

3
ответ дан Simon Byrne 15 August 2018 в 16:03
поделиться
  • 1
    Хотя я никогда не видел опубликованного обоснования для форматов с плавающей запятой VAX, я всегда думал, что диапазон экспоненциальности формата F был выбран таким образом, чтобы обеспечить представление всех важных физических констант, включая постоянную Планка (6.626070040 x 10 * * -34) и константой Авогадро (6.022140857 x 10 ** 23). Чистая гипотеза, конечно. – njuffa 15 December 2015 в 18:24
  • 2
    Интернет-поиск привел меня к этому обоснованию для форматов с плавающей точкой F и D VAX, как изначально предназначенных для PDP-11: PDP-11/40 Technical Memorandum # 16 . Обсуждение диапазона экспоненциальности F-формата специально упоминает постоянные Планка и Авогадро. – njuffa 15 December 2015 в 20:15
  • 3
    В NA Digest Sunday, February 16, 1992 Volume 92: Issue 7 , Джеймс Деммель связывает проблемы с форматом DX VAX из-за узкого диапазона экспонентов относительно LAPACK, но это не ясно из обсуждения как эти проблемы специально привели к выбору 11 экспоненциальных бит в формате VAX G. – njuffa 15 December 2015 в 20:26
  • 4
    [Д0] D. Стивенсон, предложенный стандарт для двоичной арифметики с плавающей запятой , объясняет выбор битов экспоненты для формата с двойной точностью следующим образом: «Окончательный выбор диапазона экспонентов обеспечивает, что продукт из восьми 32-разрядных терминов не может переполняться 64-битный формат - возможное преимущество для пользователей оптимизации компиляторов, которые изменяют порядок арифметических операций по сравнению с тем, что задано осторожным программистом. & quot; – njuffa 15 December 2015 в 20:40
Другие вопросы по тегам:

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