Skip to content

Instantly share code, notes, and snippets.

@jussiry
Created August 12, 2013 17:25
Show Gist options
  • Save jussiry/6213050 to your computer and use it in GitHub Desktop.
Save jussiry/6213050 to your computer and use it in GitHub Desktop.
Learn bitwise operations with this helper function
window.printbit = function(){
var saBits = [],
naLengths = [];
for (var i=0; i<arguments.length; i++) {
var arg = arguments[i];
if (typeof arg == 'string') {
saBits.push(eval(arguments[i-2]+arg+arguments[i-1]).toString(2));
arguments[i] = arguments[i-2]+arguments[i]+arguments[i-1];
} else {
saBits.push(arg.toString(2));
}
naLengths.push(arguments[i].toString().length + saBits[i].length);
}
var nLongest = Math.max.apply(null, naLengths);
for (var i=0; i<arguments.length; i++) {
console.log(arguments[i] + " ".repeat(nLongest-saBits[i].length-arguments[i].toString().length+2) + saBits[i]);
}
}
String.prototype.repeat = function (a){var b="",c=this;if(a<1)return"";for(;a;){if(a&1)b+=c;if(a>>=1)c+=c}return b}
@jussiry
Copy link
Author

jussiry commented Aug 12, 2013

printbit(1,2,'|',1,2,'&',6,1,'<<',6,1,'>>',3,5,'^')
1        1
2       10
1|2     11
1        1
2       10
1&2      0
6      110
1        1
6<<1  1100
6      110
1        1
6>>1    11
3       11
5      101
3^5    110

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment