Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Перевод с десятичной в двоичную, восьмиричную, шестнадчатиричную систему счисления (https://javascript.ru/forum/misc/47006-perevod-s-desyatichnojj-v-dvoichnuyu-vosmirichnuyu-shestnadchatirichnuyu-sistemu-schisleniya.html)

Dark19 04.05.2014 17:02

Перевод с десятичной в двоичную, восьмиричную, шестнадчатиричную систему счисления
 
Здравствуйте, подскажите может есть какая функция в jquery или как мне перевести с десятичной в двоичную, восьмиричную, шестнадчатиричную систему счисления числа?

Sweet 04.05.2014 17:13

Number.prototype.toString

Dark19 04.05.2014 17:23

Sweet,
написал вот так вот:
var n = $('#calcs').val();
$('#calcs').val(n.toString(2));
Неработает, пишет: Invalid number of parameters, expected 0

jsnb 04.05.2014 17:41

Цитата:

Сообщение от Dark19 (Сообщение 310371)
написал вот так вот:
var n = $('#calcs').val();
$('#calcs').val(n.toString(2));
Неработает, пишет: Invalid number of parameters, expected 0

Попробуй так:
var n = +$('#calcs').val();
$('#calcs').val(n.toString(2));

И #calcs это что? Инпут? И что в нем находится?

Dark19 04.05.2014 17:52

Цитата:

Сообщение от jsnb (Сообщение 310374)
Попробуй так:
var n = +$('#calcs').val();
$('#calcs').val(n.toString(2));

И #calcs это что? Инпут? И что в нем находится?

Да это инпут, там числа (скрипт калькулятора)написал так как Вы сказали, работает, но переводит как-то не так, вроде. Перевожу двойку в двоичную систему выдает 10110, должно же 10 вывести?

jsnb 04.05.2014 17:56

Цитата:

Сообщение от Dark19 (Сообщение 310375)
Да это инпут, там числа (скрипт калькулятора)написал так как Вы сказали, работает, но переводит как-то не так, вроде. Перевожу двойку в двоичную систему выдает 10110, должно же 10 вывести?

Не знаю, что ты там написал, но вот так работает:
<!DOCTYPE HTML>
<html>
  <head>
  <meta charset="utf-8">
  <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
  </head>
  <body>
<input type="text" id="calcs">
<input type="button" id="butt" value="bin">
<script>
$('#butt').click(function(){
  var n = +$('#calcs').val();
  $('#calcs').val(n.toString(2));
});
</script>
  </body>
</html>

Для надежности еще можно сделать
n = parseInt(n, 10);

Dark19 04.05.2014 17:59

jsnb,
Вот мой код:
<!DOCTYPE html>
<html>
<head>
    <title></title>
    <link type="text/css" rel="stylesheet" href="calculate.css"/>
    <script type="text/javascript" src="jquery.js"></script>
    <script src="calculate.js"></script>

</head>
<body>
    <div id="calculator">
        <div class="clr">
        <input id="calcs" type="text"/>
            </div>
        <div class="clr">
            <button class="button perevod">2</button>
            <button class="button perevod">8</button>
            <button class="button perevod">16</button>
            <button class="button perevod">32</button>
        </div>
        <div class="clr">
            <button class="button oneclick">+</button>
            <button class="button oneclick">-</button>
            <button class="button oneclick">/</button>
            <button class="button oneclick">*</button>
        </div>
        <div class="clr">
            <button class="button">1</button>
            <button class="button">2</button>
            <button class="button">3</button>
            <button class="button">4</button>
        </div>
        <div class="clr">
            <button class="button">5</button>
            <button class="button">6</button>
            <button class="button">7</button>
            <button class="button">8</button>
        </div>
        <div class="clr">
            <button class="button">9</button>
            <button class="button">0</button>
            <button id="calculate">=</button>
            <button id="clear" class="button">c</button>
        </div>
    </div>
</body>
</html>



/**
 * Created by Pashka on 29.04.14.
 */
$(document).ready(function(){
    $('.button').click(function(){
        $('#calcs').val($('#calcs').val() + $(this).html());
    });
    $('#clear').click(function(){
        $('#calcs').val('');
    });
    $('#calculate').click(function(){
        $('#calcs').val(eval($('#calcs').val()));
    });

    $('.perevod').click(function(){
        var n = +$('#calcs').val();
        $('#calcs').val(n.toString(2));
    });

    $('input').keypress(function(e) {
        var verified = (e.which == 8 || e.which == undefined || e.which == 0) ? null : String.fromCharCode(e.which).match(/[^0-9]/);
        if (verified) {
            e.preventDefault();
        }
    });

});


Оно то работает, но как-то не совсем правильно, ведь 2 в двоичной системе будет 10, а не 10110?

Dark19 04.05.2014 18:05

jsnb,
Работает, только учитывает символы те, что прописаны в самой кнопке в html. Я сделал пустую кнопку и так работает. А как сделать чтобы не учитывало символы из html?

Dark19 04.05.2014 18:07

jsnb,
все, я понял, там класс button мешал, спасибо)

ms-pro 18.06.2017 23:25

Переводим из 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


... как то так ;)


Часовой пояс GMT +3, время: 18:45.