Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Задача не знаю для какого класса - формула преобразования обычного числа в восьмиразрядное.
 
 автор: coloboc66   (01.05.2015 в 09:19)   письмо автору
 
 

Нужен скрипт или хотя бы формула.
Т.е. сам принцип преобразования понятен:

0: 00000000
1: 00000001
2: 00000010
3: 00000011
4: 00000100
5: 00000101
6: 00000110
7: 00000111
8: 00001000

Ну и так далее до 255.
Но вот составить алгоритм получения результата у меня не получается. Может кто поможет?
Спасибо.

  Ответить  
 
 автор: Trianon   (01.05.2015 в 11:11)   письмо автору
 
   для: coloboc66   (01.05.2015 в 09:19)
 

<?
for($num $num 255;  ++$num)
{
  
$d  $num$s '';

  
$s = ($d&1) . $s$d >>= 1
  
$s = ($d&1) . $s$d >>= 1
  
$s = ($d&1) . $s$d >>= 1
  
$s = ($d&1) . $s$d >>= 1
  
$s = ($d&1) . $s$d >>= 1
  
$s = ($d&1) . $s$d >>= 1
  
$s = ($d&1) . $s$d >>= 1
  
$s = ($d&1) . $s$d >>= 1

  echo 
$num "  : " "<br />\r\n";
}

  Ответить  
 
 автор: coloboc66   (01.05.2015 в 11:55)   письмо автору
 
   для: Trianon   (01.05.2015 в 11:11)
 

Хмм...
Здесь мы получим полную таблицу кодов, так?
А если надо ввести в поле любое обычное число до 255, а в другом поле получить результат его преобразования в восьмиразрядное?

  Ответить  
 
 автор: Trianon   (01.05.2015 в 21:18)   письмо автору
 
   для: coloboc66   (01.05.2015 в 11:55)
 

>Хмм...
>Здесь мы получим полную таблицу кодов, так?
>А если надо ввести в поле любое обычное число до 255, а в другом поле получить результат его преобразования в восьмиразрядное?
тогда вместо строчки for(...)
просто присвойте $num число из поля. Остальной текст неизменен.

  Ответить  
 
 автор: coloboc66   (02.05.2015 в 11:49)   письмо автору
 
   для: Trianon   (01.05.2015 в 21:18)
 

Гыы...
Круто!
А если нужно произвести обратную операцию, т.е. из восьмиразрядного числа получить обычное?

  Ответить  
 
 автор: Trianon   (02.05.2015 в 12:39)   письмо автору
 
   для: coloboc66   (02.05.2015 в 11:49)
 

$str= '10010111';
$a = str_split($s);
$n = 0;
foreach($a as $d) { $n <<= 1; $n += $d; }
echo $n;

  Ответить  
 
 автор: coloboc66   (02.05.2015 в 13:23)   письмо автору
 
   для: Trianon   (02.05.2015 в 12:39)
 

Тут нет ошибки?
Может надо:
$a = str_split($str); 

?

  Ответить  
 
 автор: Trianon   (02.05.2015 в 23:02)   письмо автору
 
   для: coloboc66   (02.05.2015 в 13:23)
 

конечно.

  Ответить  
 
 автор: confirm   (01.05.2015 в 20:51)   письмо автору
 
   для: coloboc66   (01.05.2015 в 09:19)
 

<?
$n 
= -1;
while(
$n++ < 10) {
    echo 
$n .'. 'decbin($n) . '<br>'
}


Добавить нули слева если надо думаю не проблема?

  Ответить  
 
 автор: coloboc66   (02.05.2015 в 11:50)   письмо автору
 
   для: confirm   (01.05.2015 в 20:51)
 

А на java script?

  Ответить  
 
 автор: confirm   (02.05.2015 в 19:00)   письмо автору
 
   для: coloboc66   (02.05.2015 в 11:50)
 

var n = -1, s = ''; 
while(n++ < 10) { 
    s += n + '. ' + n.toString(2) + '<br>';  
}
document.write(s)


PS. Если с ведущими нулями в начале, то, чтобы без вопросов:

var n = -1, b, s = '';
while(n++ < 255) { 
    b = n.toString(2);
    s += n + '. ' + new Array(8 - b.length).join('0') + b + '<br>';  
}
document.write(s)

  Ответить  
 
 автор: coloboc66   (02.05.2015 в 21:03)   письмо автору
 
   для: confirm   (02.05.2015 в 19:00)
 

Спасибо, други! Вот если бы вы ещё и математическую формулу нарисовали - цены бы вам не было...

  Ответить  
 
 автор: confirm   (02.05.2015 в 21:17)   письмо автору
 
   для: coloboc66   (02.05.2015 в 21:03)
 

Какую формулу? Преобразование целого числа с основанием 10 в основание 2, это деление каждого частного на 2 и записи остатка в конец двоичной записи. Деление продолжается до тех пор, пока в частном не будет 0. Результат записываем справа налево. А в сети подробности об этом не трудно найти.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования