Показать сообщение отдельно
  #10 (permalink)  
Старый 18.06.2017, 23:25
Новичок на форуме
Отправить личное сообщение для ms-pro Посмотреть профиль Найти все сообщения от ms-pro
 
Регистрация: 18.06.2017
Сообщений: 3

Переводим из 10-чной в 2-чную систему счисления (на JS)
Вот, набросал на 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


... как то так

Последний раз редактировалось ms-pro, 26.08.2017 в 11:53.
Ответить с цитированием