Coverage

100%
21
21
0

/Users/sebastiansandqvist/Documents/Sites & Projects/apps/modules/s-binary/index.js

100%
21
21
0
LineHitsSource
11var binary = module.exports = {};
2
3// ----- unit conversion
4// ---------------------------------------
51binary.toInt = function(str) {
64 return parseInt(str, 2);
7};
8
91binary.toHex = function(str) {
102 return parseInt(str, 2).toString(16);
11};
12
131binary.toBinary = function(n) {
142 return n.toString(2);
15};
16
17
18// ----- arithmetic
19// ---------------------------------------
201binary.add = function(a, b) {
212 a = parseInt(a, 2);
222 b = parseInt(b, 2);
232 return (a + b).toString(2);
24};
25
261binary.addBits = function(a, b) {
274 a = a === '1' ? 1 : 0;
284 b = b === '1' ? 1 : 0;
29
304 var sum = a ^ b;
314 var carry = a & b;
32
334 return {
34 sum: sum.toString(),
35 carry: carry.toString()
36 }
37};
38
39// binary.add2 = function(a, b) {
40
41// var aLen = a.length;
42// var bLen = b.length;
43
44// if (aLen > bLen) {
45// b = this.pad(b, aLen);
46// }
47
48// if (bLen > aLen) {
49// a = this.pad(a, bLen);
50// }
51
52// var result = '';
53// var tmp;
54// var carry = '0';
55
56// while (aLen > 0) {
57
58// aLen--;
59
60// tmp = this.addBits(a[aLen], b[aLen]);
61// carry = tmp.carry || carry;
62// tmp = this.addBits(tmp.sum, carry);
63
64// result = tmp.sum + result;
65
66// }
67
68// return result;
69
70// };
71
72// ----- etc
73// ---------------------------------------
741binary.pad = function(str, n) {
753 while (str.length < n) {
7612 str = '0' + str;
77 }
783 return str;
79};