Вот, набросал на JS две функции. Из одной вызывается другая, другая иногда вызывает сама себя. В общем по-моему неплохо вышло. Может кому пригодится)
и так:
//декларируем две функции:
function add(razryad) {
if (byte[razryad] === 0) {
byte[razryad] = 1;
} else {
byte[razryad] = 0;
add(razryad + 1);
return;
}
}
function binary(num) {
var razryad = 0;
for (var i = 0; i < num; i++) {
add(razryad);
}
/* для использования подхода следования байтов "big-endian" - применяем reverse()
для использования подхода следования байтов "little-endian" - reverse() - не применяем */
byte.reverse();
console.log(byte.join(" "));
return;
}
//var byte = [0,0,0,0,0,0,0,0]; //1 байт (8 разрядов) максимум 255
//или можно например с таким "byte"
//var byte = [0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0]; //2 байта (16 разрядов) максимум 65535
//запускаем:
var byte = [0,0,0,0,0,0,0,0]; //1 байт (8 разрядов) максимум 255
binary(128); // результат: 0 1 0 1 0 0 0 1
var byte = [0,0,0,0,0,0,0,0]; //1 байт (8 разрядов) максимум 255
binary(10); // результат: 0 1 0 1 0 0 0 0
var byte = [0,0,0,0,0,0,0,0]; //1 байт (8 разрядов) максимум 255
binary(128); // результат: 0 1 0 1 0 0 0 1
var byte = [0,0,0,0,0,0,0,0]; //1 байт (8 разрядов) максимум 255
binary(254); // результат: 0 1 1 1 1 1 1 1
var byte = [0,0,0,0,0,0,0,0 ,0,0,0,0,0,0,0,0]; //2 байта (16 разрядов) максимум 65535
binary(2017); // результат: 1 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0
... как то так