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

Форум PHP

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

 

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

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

тема: Работа с числами в двоичной системе исчисления
 
 автор: Alexey_Tihonenko   (24.07.2009 в 14:00)   письмо автору
 
 

Добрый день! Скажите пожалуйста, как сделать так, чтобы PHP после перевода чисел из десятичной системы исчисления в двоичную работал с ними как с двоичными(например складывал)? Такой скрипт выводит 22:
<?php
  $num1 
decbin(3);
  
$num2 decbin(3);
  
$num3 $num1 $num2;
  echo(
$num3);
?>

Хотя если бы числа складывались в двоичной форме и результат хранился бы в двоичной форме, то вывелось бы 110.

  Ответить  
 
 автор: yuk   (24.07.2009 в 15:41)   письмо автору
 
   для: Alexey_Tihonenko   (24.07.2009 в 14:00)
 

decbin() возвращает строку, а не число. В выражении $num3 = $num1 + $num2 вы пытаетесь сделать операцию "11"+"11", при этом РНР автоматически преобразовывает строки в числа, и выдает результат 11+11.
Делайте

<?php 
  $num1 
3
  
$num2 3
  
$num3 $num1 $num2;
  
printf("%b",$num3);
?>

  Ответить  
 
 автор: cheops   (25.07.2009 в 00:57)   письмо автору
 
   для: Alexey_Tihonenko   (24.07.2009 в 14:00)
 

Собственно никаких других чисел, кроме двоичных в компьютерах нет. Все что вы видите на экране - это представление числа, т.е. строка в с числом представленным в десятичной или двоичной записи. По умолчанию выводится десятичная запись, при помощи функции decbin вы можете добиться, чтобы запись была преобразована в двоичную строку. Далее вы работаете с числами как со строками, это уже не числа. Поэтому если хотите получить результат в двоичном формате, скаладывайте числа и применяйте к нему функцию decbin()
<?php 
  $num1 
3
  
$num2 3
  
$num3 $num1 $num2
  echo 
decbin($num3); 
?>

  Ответить  
 
 автор: Alexey_Tihonenko   (26.07.2009 в 09:55)   письмо автору
 
   для: cheops   (25.07.2009 в 00:57)
 

Спасибо за ответ, теперь все по полочкам разложилось)

  Ответить  
 
 автор: Trianon   (25.07.2009 в 01:05)   письмо автору
 
   для: Alexey_Tihonenko   (24.07.2009 в 14:00)
 

счисления

<?php
  $num1 
bindec('11');
  
$num2 bindec('11');
  
$num3 $num1 $num2;
  echo 
decbin($num3);
?> 


на самом деле bindec, конечно, никакая не bindec, а charstring_to_bitstring
и decbin, соответственно, наоборот.

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

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