단 정밀도 부동 소수점 연산과 배정 밀도 부동 연산의 차이점은 무엇입니까?
비디오 게임 콘솔과 관련하여 실용적인 용어에 특히 관심이 있습니다. 예를 들어, Nintendo 64는 64 비트 프로세서를 가지고 있으며 그렇다면 그렇다면 배정도 부동 소수점 연산이 가능 했습니까? PS3와 Xbox 360은 배정도 부동 소수점 연산을 할 수 있거나 단 정도만 사용할 수 있으며 일반적으로 배정도 기능 (사용하는 경우)을 사용합니다.
답변
참고 : Nintendo 64 에는 64 비트 프로세서가 있습니다.
64 비트 데이터를 처리 할 때 일반적으로 64 비트 데이터 유형에 사용할 수있는 더 큰 데이터 정밀도가 필요하지 않으며 64 비트 데이터를 처리하는 데 두 배의 RAM과 캐시가 사용되므로 많은 게임에서 칩의 32 비트 처리 모드를 이용했습니다. 및 대역폭으로 인해 전체 시스템 성능이 저하됩니다.
에서 Webopedia :
배정 밀도라는 용어는 정밀도가 실제로 배가 아니기 때문에 잘못된 것입니다.
double이라는 단어는 배정 밀도 숫자가 일반 부동 소수점 숫자보다 두 배 많은 비트를 사용한다는 사실에서 파생됩니다.
예를 들어 단 정밀도 숫자에 32 비트가 필요한 경우 배정 밀도 대응 길이는 64 비트입니다.여분의 비트는 정밀도뿐만 아니라 표현 될 수있는 크기의 범위를 증가시킵니다.
정밀도와 크기의 범위가 증가하는 정확한 양은 프로그램이 부동 소수점 값을 나타내는 데 사용하는 형식에 따라 다릅니다.
대부분의 컴퓨터는 IEEE 부동 소수점 형식으로 알려진 표준 형식을 사용합니다.
IEEE 배정도 형식은 실제로 단정도 형식 보다 두 배 이상의 정밀도를 가지며 훨씬 더 큰 범위를 갖 습니다.
단정도
IEEE 단 정밀도 부동 소수점 표준 표현에는 32 비트 워드가 필요합니다. 32 비트 워드는 0에서 31까지 번호가 왼쪽에서 오른쪽으로 표시 될 수 있습니다.
- 첫 번째 비트는 부호입니다 비트 S입니다.
- 다음 8 비트는 지수 비트 ‘E’이며
-
마지막 23 비트는 분수 ‘F’입니다.
S EEEEEEEE FFFFFFFFFFFFFFFFFFFFFFF 0 1 8 9 31
단어로 표현 된 값 V는 다음과 같이 결정될 수있다 :
- E = 255이고 F가 0이 아니면 V = NaN ( “숫자 아님”)
- E = 255이고 F가 0이고 S가 1이면 V = -Infinity
- E = 255이고 F가 0이고 S가 0이면 V = 무한대
- 경우
0<E<255
다음V=(-1)**S * 2 ** (E-127) * (1.F)
“1.F는”1를 선도하는 암시 적 이진 지점 F를 접두사에 의해 생성 된 이진수를 나타 내기위한된다. - E = 0이고 F가 0이 아니면
V=(-1)**S * 2 ** (-126) * (0.F)
. 이들은 “비정규 화 된”값입니다. - E = 0이고 F가 0이고 S가 1이면 V = -0
- E = 0이고 F가 0이고 S가 0이면 V = 0
특히,
0 00000000 00000000000000000000000 = 0
1 00000000 00000000000000000000000 = -0
0 11111111 00000000000000000000000 = Infinity
1 11111111 00000000000000000000000 = -Infinity
0 11111111 00000100000000000000000 = NaN
1 11111111 00100010001001010101010 = NaN
0 10000000 00000000000000000000000 = +1 * 2**(128-127) * 1.0 = 2
0 10000001 10100000000000000000000 = +1 * 2**(129-127) * 1.101 = 6.5
1 10000001 10100000000000000000000 = -1 * 2**(129-127) * 1.101 = -6.5
0 00000001 00000000000000000000000 = +1 * 2**(1-127) * 1.0 = 2**(-126)
0 00000000 10000000000000000000000 = +1 * 2**(-126) * 0.1 = 2**(-127)
0 00000000 00000000000000000000001 = +1 * 2**(-126) *
0.00000000000000000000001 =
2**(-149) (Smallest positive value)
배정도
IEEE 배정 밀도 부동 소수점 표준 표현에는 64 비트 워드가 필요하며, 왼쪽에서 오른쪽으로 0에서 63까지 번호가 매겨져 표시 될 수 있습니다.
- 첫 번째 비트는 부호 비트 S입니다.
- 다음 11 비트는 지수 비트 ‘E’이며
-
마지막 52 비트는 분수 ‘F’입니다.
S EEEEEEEEEEE FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 0 1 11 12 63
단어로 표현 된 값 V는 다음과 같이 결정될 수있다 :
- E = 2047이고 F가 0이 아닌 경우 V = NaN ( “숫자가 아님”)
- E = 2047이고 F가 0이고 S가 1이면 V = -Infinity
- E = 2047이고 F가 0이고 S가 0이면 V = 무한대
- 경우
0<E<2047
다음V=(-1)**S * 2 ** (E-1023) * (1.F)
“1.F는”1를 선도하는 암시 적 이진 지점 F를 접두사에 의해 생성 된 이진수를 나타 내기위한된다. - E = 0이고 F가 0이 아니면
V=(-1)**S * 2 ** (-1022) * (0.F)
“정규화되지 않은”값입니다. - E = 0이고 F가 0이고 S가 1이면 V = -0
- E = 0이고 F가 0이고 S가 0이면 V = 0
참조 :
ANSI / IEEE 표준 754-1985,
이진 부동 소수점 산술 표준.
답변
나는 많은 답변을 읽었지만 double 이라는 단어의 출처 를 정확하게 설명하는 사람 은 없습니다. 몇 년 전에 대학 교수가 한 좋은 설명이 기억납니다.
VonC의 답변 스타일을 상기 한 단 정밀도 부동 소수점 표현은 32 비트 워드를 사용합니다.
- 부호 1 비트 S
- 지수 ‘E’에 대해 8 비트
- 분수에 대한 24 비트 ( mantissa 또는 계수 라고도 함) (23 개만 표시됨) 그것을 ‘M’이라고하자 ( mantissa의 경우 ,이 이름은 “분수”가 잘못 이해 될 수 있으므로 선호합니다).
대표:
S EEEEEEEE MMMMMMMMMMMMMMMMMMMMMMM
bits: 31 30 23 22 0
(단지 부호 비트는 첫 번째가 아니라 마지막입니다.)
더블 부동 소수점 표현 정밀도는 64 비트의 단어를 사용합니다.
- 부호 1 비트 S
- 지수 ‘E’에 대해 11 비트
- 분수 / 가수 / 계수의 경우 53 비트 (52 개만 표시되지만), ‘M’
대표:
S EEEEEEEEEEE MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM
bits: 63 62 52 51 0
아시다시피, 가수 는 두 가지 유형 모두 표현에 비해 정보가 조금 더 있습니다. 실제로, 가수는 모든 비유의없이 표현 된 숫자 0
입니다. 예를 들어
- 0.000124는 0.124 × 10-3이됩니다.
- 237.141은 0.237141 × 10 3이됩니다.
이것은 가수가 항상 형태 일 것임을 의미합니다
0.α 1 α 2 … α t × β p
여기서 β는 표현의 기초입니다. 그러나 분수는 이진수이므로 α 1 은 항상 1과 같으므로 분수는 1로 다시 쓸 수 있습니다 . α 2 α 3 … α t + 1 × 2 p , 암시 가정 될 수있는 초기 1 여분의 비트를위한 공간 확보 (α t + 1 ).
32의 2 배가 64라는 것은 사실이지만, 그 단어가 나오는 곳이 아닙니다.
정밀도는 있습니다 소수 자릿수를 나타냅니다 올바른 표현 오류 또는 근사치의 어떤 종류없이 즉,. 다시 말해, 얼마나 안전하게 십진수를 사용할 수 있는지 나타냅니다. 사용할 .
그렇게 말하면 안전하게 사용할 수있는 소수 자릿수를 쉽게 추정 할 수 있습니다.
- 단정도 : log 10 (2 24 ), 약 7 ~ 8 자리
- 배정도 : log 10 (2 53 )
답변
기계의 기본적인 차이점은 배정도는 단일 비트의 두 배를 사용한다는 것입니다. 일반적인 구현에서는 단일 32 비트, 이중 64 비트입니다.
그러나 그것은 무엇을 의미 합니까? IEEE 표준을 가정하면, 단 정밀도 숫자는 가수의 약 23 비트, 최대 지수는 약 38입니다. 배정도는 가수에 대해 52 비트를 가지며 약 308의 최대 지수를 갖습니다.
자세한 내용은 평소와 같이 Wikipedia 에 있습니다.
답변
여기에 모든 훌륭한 답변을 추가하려면
먼저 float 및 double 은 모두 소수를 나타내는 데 사용됩니다. 따라서 두 값의 차이는 숫자를 얼마나 정확하게 저장할 수 있는지에 달려 있습니다.
예를 들어 : 123.456789를 저장해야합니다. 하나는 123.4567 만 저장할 수 있고 다른 하나는 정확한 123.456789를 저장할 수 있습니다.
따라서 기본적으로 우리는 얼마나 정확하게 숫자를 저장할 수 있는지 알고 싶어합니다.
@Alessandro 인용
정밀도는 정확한 소수 자릿수를 나타냅니다. 즉, 어떤 종류의 표현 오류나 근사도 없습니다. 즉, 안전하게 사용할 수있는 소수 자릿수를 나타냅니다 .
Float는 분수 부분에 약 7-8 자리를 정확하게 저장할 수있는 반면 Double은 분수 부분에 약 15-16 자리를 정확하게 저장할 수 있습니다.
따라서 float는 소수 부분의 두 배 를 저장할 수 있습니다 . 그래서 Double은 float 두 배 라고 합니다.
답변
“ps3 및 xbxo 360은 배정도 부동 소수점 연산을 제거 할 수 있습니까? 또는 단 정밀도 만 사용하고 일반적인 경우에는 배정도 기능을 사용합니다 (존재하는 경우).”
두 플랫폼 모두 이중 부동 소수점을 사용할 수 없다고 생각합니다. 원래 Cell 프로세서는 XBox 360 (R600)에 기반한 ATI 하드웨어와 마찬가지로 32 비트 부동 소수점 만있었습니다. 셀은 나중에 이중 부동 소수점 지원을 얻었지만 PS3가 그 칩을 사용하지 않을 것이라고 확신합니다.
답변
기본적으로 단 정밀도 부동 소수점 산술은 32 비트 부동 소수점 숫자를 처리하는 반면 배정 밀도 는 64 비트를 처리합니다.
배정도의 비트 수는 저장 될 수있는 최대 값을 증가시킬뿐만 아니라 정밀도 (예 : 유효 자릿수)를 증가시킵니다.
답변
모두 자세히 설명하고 추가 할 수있는 것은 없습니다. Layman의 약관 또는 일반 영어로 설명하고 싶지만
1.9 is less precise than 1.99
1.99 is less precise than 1.999
1.999 is less precise than 1.9999
…..
“1.9”를 저장하거나 나타낼 수있는 변수는 1.9999를 보유하거나 나타낼 수있는 것보다 정확도가 떨어집니다. 이 분수는 큰 계산에서 큰 차이가있을 수 있습니다.