JSFiddle - React, Tailwind, and code Playground
HTML
Number: <input type="text" ID="txtValue" value=""/>
<input type="button" value="Click to Test!" ID="btnRunTest" />
JavaScript
function runTest() {
var num = document.getElementById("txtValue").value;
num = isNaN(num * 1) ? 0 : num * 1;
var myBitArray = new BitArray(null, num);
alert(myBitArray.toString() + " = " + myBitArray.toNumber() + "\n"
+ "Compliment: " + myBitArray.getCompliment().toString() + " = " + myBitArray.getCompliment().toNumber() + "\n"
+ "Union with Comp: " + BitArray.getUnion(myBitArray, myBitArray.getCompliment()) + "\n"
+ "Intersect w Comp: " + BitArray.getIntersection(myBitArray, myBitArray.getCompliment()) + "\n"
+"Difference w Comp: " + BitArray.getDifference(myBitArray, myBitArray.getCompliment()));
}
/* BitArray DataType */
// Constructor
function BitArray(size, bits) {
// Private field - array for our bits
this.m_bits = new Array();
//.ctor - initialize as a copy of an array of true/false or from a numeric value
if (bits && bits.length) {
for (var i = 0; i < bits.length; i++)
this.m_bits.push(bits[i] ? BitArray._ON : BitArray._OFF);
} else if (!isNaN(bits)) {
this.m_bits = BitArray.shred(bits).m_bits;
}
if (size && this.m_bits.length != size) {
if (this.m_bits.length < size) {
for (var i = this.m_bits.length; i < size; i++) {
this.m_bits.push(BitArray._OFF);
}
} else {
for(var i = size; i > this.m_bits.length; i--){
this.m_bits.pop();
}
}
}
}
/* BitArray PUBLIC INSTANCE METHODS */
// read-only property - number of bits
BitArray.prototype.getLength = function () { return this.m_bits.length; };
// accessor - get bit at index
BitArray.prototype.getAt = function (index) {
if (index < this.m_bits.length) {
return this.m_bits[index];
}
return null;
...