decimal-to-binary-converter
v1.0.2
Published
This library is an algorithm for converting decimal to binary.
Downloads
3
Maintainers
Readme
decimal-to-binary-converter
This library is an algorithm for converting decimal to binary and show each steps of calculation.
This library was generated by essay
(https://github.com/dtinth/essay).
Calculation
This library will show how to calculate them.
// 12.875 to binary
Converting Integer 12 to binary
12 % 2 = 0
12 / 2 = 6
6 % 2 = 0
6 / 2 = 3
3 % 2 = 1
3 / 2 = 1
1 % 2 = 1
1 / 2 = 0
[Answer = 1100]
Converting Float 0.875 to binary
0.875 * 2 = 1.75
1
0.75 * 2 = 1.5
1
0.5 * 2 = 1
1
[Answer = 0.111]
======== binary of 12.875 is 1100.111 ========
Getting started
- Install this library
npm i --save decimal-to-binary-converter
- import function from this library
import { converter } from 'decimal-to-binary-converter'
API
converter
is a function that can be used.
Limitation: floating point of binary maximum default is 10
// main.js
export { converter } from './converter'
Example
There are some examples about simple results of converter
.
// converter.test.js
import { expect } from 'chai'
import { converter, convertFloatToBinary, convertIntegerToBinary } from './converter'
describe('Converter', () => {
it('should convert decimal 8 to binary 1000', () => {
expect(convertIntegerToBinary(8)).to.equal('1000')
})
it('should convert decimal 0.125 to binary 0.001', () => {
expect(convertFloatToBinary(0.125)).to.equal('0.001')
})
it('should convert decimal 12.875 to binary 1100.111', () => {
expect(converter(12.875)).to.equal('1100.111')
})
})
Implementation
converter
contains two parts
convertIntegerToBinary
convertFloatToBinary
// converter.js
import _ from 'lodash'
export const convertIntegerToBinary = (number) => {
const result = []
console.log(`\nConverting Integer ${number} to binary`)
while (number !== 0) {
console.log(`\n${number} % 2 = ${number % 2}`)
console.log(`${number} / 2 = ${number / 2 | 0}`)
result.push(number % 2)
number = number / 2 | 0
}
const answer = _.reverse(result).join('')
console.log(`\n[Answer = ${answer}]`)
return answer
}
export const convertFloatToBinary = (number) => {
const result = []
console.log(`\nConverting Float ${number} to binary`)
while (!_.has(result, number) && number % 1 !== parseFloat(0)) {
console.log(`\n${number} * 2 = ${number * 2}`)
number *= 2
console.log(`${number | 0}`)
result.push(number | 0 === 1 ? 1 : 0)
number %= 1
if (result.length > 10) break
}
const answer = `0.${result.join('')}`
console.log(`\n[Answer = ${answer}]`)
return answer
}
export const converter = (number) => {
const intPart = number | 0
const floatPart = number % 1
const resultIntPart = convertIntegerToBinary(intPart)
const resultFloatPart = convertFloatToBinary(floatPart).split('.').pop()
const result = `${resultIntPart}.${resultFloatPart}`
console.log(`======== binary of ${number} is ${result} ========`)
return result
}