연산자
이번시간에는 연산자에 대해서 알아아봅시다.
연산자라고 하면 뭔가 어려워보이지만 산수를 하는것입니다.
덧셈은 +
뺄셈은 -
곱셈은 *
나눗셈은 /
나머지는 %
활용법은 아래와 같습니다.
<?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 />"; ?>
증가 연산자, 감소연산자
++,-- 라는 것이 있습니다. 이것들을 사용하면 ++는 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 />"; ?>
결과는 아래와 같다.
대입 연산자
$var =123 과 같이 선언할때에는 var 과 123이 같다는 뜻이라기 보다는 123이 var에 대입된다라고 이해를 해야 합니다.
대입연산자는 = 기호를 사용합니다. 그렇다면 $a = $a + 5는 복합연산자를 사용하여 $a += 5 로 줄일수 있습니다.
또 문자열을 대입할때는 .= 를 사용합니다.
대입자 연산자 활용
<?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 />"; ?>
결과는 아래와같다. 소스에서 \" < -- 는 " 를 뜻함.
비교 연산자
비교연산자는 제어문과 반복문등의 조건식에서 많이 사용됩니다.
두가지 조건을 비교하여 참일 경우 명령을 수행하며 거짓일 경우 명령을 수행하지 않습니다.
논리 연산자
논리연산자도 참과 거짓을 반환하는 연산자입니다.
비교 연산자들을 여러개 조합시킬 수 있습니다.
위의 표에서 보듯이 and 와 &&는 같고
or 와 ||도 같습니다.
비트 연산자
비트단위연산자는 0 과 1로 조합된 2진수의 형태로 연산을 수행한다.
혹시 공대생이 아니신 분이 이걸 보신다면 비트열 이동이란게 무슨말인가 하실수도 있으실것 같습니다.
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 />"; ?>
이며 결과는 다음과 같다.
비트연산자에 대해서 잘 모르시는 분들은 좀 이해가 안가시는게 있을실것 같습니다.
a 가 5이고 b가 8이며
각 수의 이진수는 0101 ,1000 이다.
이것이 왜 &으로 곱을 하는데 답이 0일까 하는 것입니다.
&에서는 각 자리수가 1로 겹쳐야 1이 됩니다.
즉
5 = 0101
8 = 1000
보면 각 자리수가 1로 겹쳐지는 것이 하나도 없으므로 0 이되는 것입니다.