연산자

이번시간에는 연산자에 대해서 알아아봅시다.
연산자라고 하면 뭔가 어려워보이지만 산수를 하는것입니다.

덧셈은 +

뺄셈은 -

곱셈은 *

나눗셈은 /

나머지는 %

활용법은 아래와 같습니다.

<?php
    echo "연산자 사용 예제<br />";

    $a = 8;
    $b = 5;

    $value = $a + $b;
    echo "$a + $b = $value<br />";

    $value = $a - $b;
    echo "$a - $b = $value<br />";

    $value = $a * $b;
    echo "$a * $b = $value<br />";

    $value = $a / $b;
    echo "$a / $b = $value<br />";

    $value = $a % $b;
    echo "$a % $b = $value<br />";
?>
php image

증가 연산자, 감소연산자

++,-- 라는 것이 있습니다. 이것들을 사용하면 ++는 1을 증가하며, --는 1을 감소합니다.

증가(++)

$a++ : 변수 $a의 값을 먼저 반환하고,1을 증가한다.

$++a : 먼저 1을 증가시키고, 변수 $a를 반환한다.

감소(--)

$a-- : 변수 $a의 값을 먼저 반환하고, 1을 감소시킨다.

$--a : 먼저 1을 감소시키고, $a를 반환한다.

그럼 증감연산자를 이해해보자!

$a = 5 라고 할때 $b = $a++ 의 값은 무엇일까?

$a++는 값을 먼저 반환하고 1을 증가시킵니다. 그러므로 일단 자신의 값인 5를 반환합니다. 그러면 $b 는 5가 됩니다. 그후 1을 증가시킵니다. 그러므로 a의 값은 6이 됩니다.

즉 $a = 6, $b = 5이다.

그렇다면 이번엔 $a = 5 일때 $b = ++$a 는 무엇이 될까...

a는 5인데 ++$a이므로 우선 1을 증가시킵니다. 그후에 반환을 한다. 그러므로 a = 6이고 그후에 반환하므로 b 도 6이 된다.

그럼 소스로 이해를 해보면

<?php
    echo " a = 5 일때, b = a ++ 의 연산결과값 계산 <br />";
    echo " ============================================== ";

    $a = 5;
    $b = $a++;

    echo "\$a=$a... 변수 \$a에 1이 증가된 값이 출력<br />";
    echo "\$b=$b... 변수 \$a의 값이 1증가되기 전 값이 \$b에 대입<br />";

    echo "\$a=5 일 때, \$b= ++\$a의 연산결과 \$a와 \$b의 값? <br />";

    $a = 5 ;
    $b = ++$a;

    echo "\$a=$a... 변수 \$a의 값이 1이 증가된 값이 출력 <br />";
    echo "\$b=$b... 변수 \$a의 값이 먼저 1 증가되어 \$b에 대입 <br />";
?>

결과는 아래와 같다.

php image

대입 연산자

$var =123 과 같이 선언할때에는 var 과 123이 같다는 뜻이라기 보다는 123이 var에 대입된다라고 이해를 해야 합니다.

대입연산자는 = 기호를 사용합니다. 그렇다면 $a = $a + 5는 복합연산자를 사용하여 $a += 5 로 줄일수 있습니다.

또 문자열을 대입할때는 .= 를 사용합니다.

php image

대입자 연산자 활용

<?php
    echo "대입 연산자의 사용 <br />";

    $a = 3;
    $a += 5;

    echo "\$a = 3<br />";
    echo "\$a += 5<br /> 연산결과 $a <br />";

    $a = 7;
    $a %= 5;
    echo "\$a = 7<br />";
    echo "\$a %= 5<br /> 나머지 연산결과... <b>$a</b><br />";

    $a = "대한";
    $a .= "민국";
    echo "\$a = \"대한\" <br />";
    echo "\$a .= \"민국\" <br />";
    echo "결과..-->  $a <br />";
?>

결과는 아래와같다. 소스에서 \" < -- 는 " 를 뜻함.

php image

비교 연산자

비교연산자는 제어문과 반복문등의 조건식에서 많이 사용됩니다.

두가지 조건을 비교하여 참일 경우 명령을 수행하며 거짓일 경우 명령을 수행하지 않습니다.

php image

논리 연산자

논리연산자도 참과 거짓을 반환하는 연산자입니다.

비교 연산자들을 여러개 조합시킬 수 있습니다.

php image

위의 표에서 보듯이 and 와 &&는 같고

or 와 ||도 같습니다.

비트 연산자

비트단위연산자는 0 과 1로 조합된 2진수의 형태로 연산을 수행한다.

php image

혹시 공대생이 아니신 분이 이걸 보신다면 비트열 이동이란게 무슨말인가 하실수도 있으실것 같습니다.

5를 이진수로 나타낸다면 0101 입니다. 오른쪽끝에서부터 왼쪽 방향으로 1 2 4 8 16 32 64 128 256 512 1024 2048 이런 순으로 나아가는데요.

보시면

0 1 0 1

8 4 2 1

위의 숫자는 2진수이고 아래는 각 자리가 뜻하는 값입니다.

즉 101 에서 1이 4와 1 자리에 표시가 되어있는것이죠 그러므로 5를 뜻합니다.

서로의 변환방식을 보시려면 네이버에서 쉽게 방법을 보실수가 있으십니다.

그럼 비트 이동이란것은요..

5의 이진수 0101 에서 2비트 오른쪽이동이라고 한다면 2비트 오른쪽이동이므로 0001 이 됩니다. 이동된 2비트는 사라지게 되고 새로온 자리는 0으로 채워지게 됩니다. 그러므로 값이 0001 이고 값은 1입니다.

다시 강좌로

비트연산자의 활용을 소스로 본다면...

<?php
    echo " \$a = 5, \$b = 8 일 때, 비트연산자 활용 <br />";

    $a = 5;
    $b = 8;

    //5 는 이진수로 0101
    //8 은 이진수로 1000

    $c = $a & $b;
    $d = $a | $b;
    $e = $a << 3;
    $f = $b >> 2;

    echo "\$a & \$b = $c";
    echo ".... 0101 * 1000 = <b>0000</b> <br /><br />";

    echo "\$a | \$b = $d";
    echo ".... 0101 + 1000 = 1101 <br /><br />";

    echo "\$a << 3 = $e <br />";
    echo ".... 0101 왼쪽으로 3비트 이동 후 101000 <br /><br />";

    echo "\$b >> 2 = $f <br />";
    echo ".... 1000 오른쪽으로2비트 이동 후 0010 <br />";
?>

이며 결과는 다음과 같다.

php image

비트연산자에 대해서 잘 모르시는 분들은 좀 이해가 안가시는게 있을실것 같습니다.

a 가 5이고 b가 8이며

각 수의 이진수는 0101 ,1000 이다.

이것이 왜 &으로 곱을 하는데 답이 0일까 하는 것입니다.

&에서는 각 자리수가 1로 겹쳐야 1이 됩니다.

5 = 0101

8 = 1000

보면 각 자리수가 1로 겹쳐지는 것이 하나도 없으므로 0 이되는 것입니다.