Spaces:
Configuration error
Configuration error
; | |
var MAX_ITER = 1075; // 1023+52 (subnormals) => BIAS+NUM_SIGNFICAND_BITS-1 | |
var maxBits = 54; // only 53 bits for fraction | |
module.exports = function fractionToBitString(x) { | |
var str = ''; | |
if (x === 0) { | |
return str; | |
} | |
var j = MAX_ITER; | |
var y; | |
// Each time we multiply by 2 and find a ones digit, add a '1'; otherwise, add a '0'.. | |
for (var i = 0; i < MAX_ITER; i += 1) { | |
y = x * 2; | |
if (y >= 1) { | |
x = y - 1; // eslint-disable-line no-param-reassign | |
str += '1'; | |
if (j === MAX_ITER) { | |
j = i; // first 1 | |
} | |
} else { | |
x = y; // eslint-disable-line no-param-reassign | |
str += '0'; | |
} | |
// Stop when we have no more decimals to process or in the event we found a fraction which cannot be represented in a finite number of bits... | |
if (y === 1 || i - j > maxBits) { | |
return str; | |
} | |
} | |
return str; | |
}; | |