|
|
|
| Добрый день! Мне вообщем необходимо вычитать из одного двоичного числа другое и складывать двоичные числа. Через библиотеку GMP я написал функции AND OR XOR, осталось только осуществить работу с отрицательными числами и сделать имликацию и еквивалентность.
A*B+неА* неB- еквивалентеность
неА+В- импликация
<?
function f_not($a){
$d = decbin($a);
$len = strlen($d);
while(intval($len) < 8)
{$d = "0".$d;$len++;}
$d=str_replace("1","x",$d);
$d=str_replace("0","1",$d);
$d=str_replace("x","0",$d);
if($d{0} == '0')
{
$d = bindec($d);
}
else
{
$d = "Получается отрицательное число".$d;
}
return $d;
}
function f_xor($a,$b){
$a=gmp_init(strval($a));
$b=gmp_init(strval($b));
$d=gmp_xor($a,$b);
return floatval(gmp_strval($d));
}
function f_and($a,$b){
$a=gmp_init(strval($a));
$b=gmp_init(strval($b));
$d=gmp_and($a,$b);
return floatval(gmp_strval($d));
}
function f_or($a,$b){
$a=gmp_init(strval($a));
$b=gmp_init(strval($b));
$d=gmp_or($a,$b);
return floatval(gmp_strval($d));
}
?>
|
| |
|
|
|
|
|
|
|
для: Buhen
(08.11.2008 в 10:32)
| | Никто не знает? может есть специальный модуль для булевых функций? | |
|
|
|
|
|
|
|
для: Buhen
(10.11.2008 в 20:03)
| | с числами какого размера необходимо оперировать? | |
|
|
|
|
|
|
|
для: Trianon
(10.11.2008 в 20:19)
| | 51 85 15 | |
|
|
|
|
|
|
|
для: Buhen
(10.11.2008 в 22:25)
| | Это размер? Или сами числа? | |
|
|
|
|
|
|
|
для: Trianon
(10.11.2008 в 22:41)
| | сами числа | |
|
|
|
|
|
|
|
для: Buhen
(10.11.2008 в 23:12)
| | funсtion f_not($a) { return ~$a; }
funсtion f_or($a, $b) { return $a|$b; }
funсtion f_and($a, $b) { return $a&$b; }
и т.д. | |
|
|
|