이번시간에는 연산자에 대해서 알아아봅시다.
연산자라고 하면 뭔가 어려워보이지만 산수를 하는것입니다.
덧셈은 +
뺄셈은 -
곱셈은 *
나눗셈은 /
나머지는 %
활용법은 아래와 같습니다.
<?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 이되는 것입니다.
봐주셔서 감사합니다. 문의 또는 잘못된 설명은 아래의 댓글에 부탁드립니다.
당신의 작은 누름이 저에게는 큰 희망이 됩니다.
댓글 0개
정렬기준