【JavaScript】 number의 비트를 본다 【IEEE754】
소개
자바스크립트의 숫자가 어떻게 비트가 서 있는지 알고 싶습니다.
그래서 Float64Array를 사용하여 표시해 보았습니다.
여기 부동 소수점 시뮬레이터 그리고 비교하거나 toString(2)로 비교해 일치하고 있는 것을 확인하고 있으므로, number에서도 메모리상은 Float64Array와 같은 것일까? 라고 생각합니다.
IEEE754에 대한 간략한 설명
IEEE754의 64bit는 다음과 같이 되어 있습니다.
부호부(1bit) | 지수부(11bit) | 가수부(52bit)
가수부는 선두의 1을 생략하기 때문에, 실질 53bit입니다.
자세한 내용은 구구하십시오.
여기 가 알기 쉽다고 생각합니다.
프로그램
const float64 = new Float64Array(1);
float64[0] = 0.1; // ここで値を変更してください。
console.log(float64[0]);
const uint8 = new Uint8Array(float64.buffer);
const str = uint8.reduce((p, c) => ('00000000' + c.toString(2)).slice(-8) + p, '');
console.log(str);
프로그램 실행 및 비교
0.1과 0.2에서 프로그램을 실행하고,
여기 부동 소수점 시뮬레이터 에서 비교하거나 toString(2)로 비교해 봅니다.
0.1 프로그램 실행
0.1을 부동 소수점 시뮬레이터에서 실행
일치합니다.
0.1 toString(2)
두 번째 1에서 비교하면 가수 부분이 일치합니다.
0.2 프로그램 실행
0.2를 부동 소수점 시뮬레이터에서 실행
일치합니다.
0.2 toString(2)
두 번째 1에서 비교하면 가수 부분이 일치합니다.
Reference
이 문제에 관하여(【JavaScript】 number의 비트를 본다 【IEEE754】), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/PG0721/items/e6a6fc57cb28b3b47b2b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
IEEE754의 64bit는 다음과 같이 되어 있습니다.
부호부(1bit) | 지수부(11bit) | 가수부(52bit)
가수부는 선두의 1을 생략하기 때문에, 실질 53bit입니다.
자세한 내용은 구구하십시오.
여기 가 알기 쉽다고 생각합니다.
프로그램
const float64 = new Float64Array(1);
float64[0] = 0.1; // ここで値を変更してください。
console.log(float64[0]);
const uint8 = new Uint8Array(float64.buffer);
const str = uint8.reduce((p, c) => ('00000000' + c.toString(2)).slice(-8) + p, '');
console.log(str);
프로그램 실행 및 비교
0.1과 0.2에서 프로그램을 실행하고,
여기 부동 소수점 시뮬레이터 에서 비교하거나 toString(2)로 비교해 봅니다.
0.1 프로그램 실행
0.1을 부동 소수점 시뮬레이터에서 실행
일치합니다.
0.1 toString(2)
두 번째 1에서 비교하면 가수 부분이 일치합니다.
0.2 프로그램 실행
0.2를 부동 소수점 시뮬레이터에서 실행
일치합니다.
0.2 toString(2)
두 번째 1에서 비교하면 가수 부분이 일치합니다.
Reference
이 문제에 관하여(【JavaScript】 number의 비트를 본다 【IEEE754】), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/PG0721/items/e6a6fc57cb28b3b47b2b
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
const float64 = new Float64Array(1);
float64[0] = 0.1; // ここで値を変更してください。
console.log(float64[0]);
const uint8 = new Uint8Array(float64.buffer);
const str = uint8.reduce((p, c) => ('00000000' + c.toString(2)).slice(-8) + p, '');
console.log(str);
0.1과 0.2에서 프로그램을 실행하고,
여기 부동 소수점 시뮬레이터 에서 비교하거나 toString(2)로 비교해 봅니다.
0.1 프로그램 실행
0.1을 부동 소수점 시뮬레이터에서 실행
일치합니다.
0.1 toString(2)
두 번째 1에서 비교하면 가수 부분이 일치합니다.
0.2 프로그램 실행
0.2를 부동 소수점 시뮬레이터에서 실행
일치합니다.
0.2 toString(2)
두 번째 1에서 비교하면 가수 부분이 일치합니다.
Reference
이 문제에 관하여(【JavaScript】 number의 비트를 본다 【IEEE754】), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/PG0721/items/e6a6fc57cb28b3b47b2b텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)