정수는 소수점을 포함하지 않은 숫자를 말합니다.
정수는 소수점을 포함하지 않기 때문에 컴퓨터 비트 환경에 따라 다르지만 최상의 부호 비트를 제외한 모든 비트를 이진법의 수로 표현합니다.
정수의 정의
10진법, 16진법 헥사 방식, 8진법으로 표현할 수 있습니다. 또한 비트 단위로 비트 연산이 가능한 타입니다.
10진법 표현은 기본적으로 우리가 사용하는 숫자를 입력하면 됩니다.
$a = 5;
$b =123;
$c = 777;
정수가 표현할 수 있는 값은 16bit, 32bit, 64bit 환경에 따라 다릅니다.
정수는 양의 수와 음의 수로 변수의 최상의 부호 비트를 이용하여 수의 범위를 정의합니다. 따라서 정수는 -2,147,483,648 ~ 2,147,483,647의 사이 값을 갖게 됩니다.
singed란 정수의 부호 비트를 이용한 양수/음수 모두를 포함하고 있는 타입이라고 생각하면 됩니다. unsigned는 정수의 부호 비트를 사용하지 않고 모두 양의 수로 값을 처리하는 방식입니다. unsigned는 signed보다 두 배 더 많은 수를 표현할 수 있습니다.
정수변수는 $변수명 뒤에 정수를 대입하면 됩니다.
예제 파일 int-01.php
<?php
$x = 5985;
var_dump($x);
?>
결과
int(5985)
PHP는 생성한 변수가 정수변수를 확인할 수 있는 is_int()이라는 내부 함수를 제공합니다.
|관련함수|
bool is_object ( mixed $var )
매개변수 값으로 변수를 전달하면 변수의 오브젝트 타입 여부를 논리값 형태로 반환합니다.
예제 파일 int-02.php
<?php
$values = array(23, "23", 23.5, "23.5", null, true, false);
foreach ($values as $value) {
echo "is_int(";
var_export($value);
echo ") = ";
var_dump(is_int($value));
echo "<br>";
}
?>
결과
is_int(23) = bool(true)
is_int('23') = bool(false)
is_int(23.5) = bool(false)
is_int('23.5') = bool(false)
is_int(NULL) = bool(false)
is_int(true) = bool(false)
is_int(false) = bool(false)
위의 예제는 나열된 값들이 정수형 자료인지를 판별합니다.
예제 파일 int-03.php
<?php
$num = 3;
if(is_int($num)){
echo "정수입니다.";
} else {
echo "정수가 아닙니다.";
}
?>
결과
정수입니다.
정수는 컴퓨터의 기본 숫자 표현 값인 2진수로 값을 저장하고 출력할 수 있습니다.
2진법은 0b 로 시작하며, 0과 1로 표현을 합니다. PHP에서는 2진법으로 변수에 저장을 하기 위해서는 숫자앞에 0b를 같이 적어 줍니다.
|문법|
$a = 0b00000001;
$b = 0b11111111;
예제 파일 int-04.php
<?php
// 2진법으로 변수에 값을 저장합니다.
// 2진법은 0b로 시작합니다.
$a = 0b00000001;
$b = 0b11111111;
// 2진수를 8bit 형태로 출력합니다.
printf("2진법 : a = %08b, b= %08b <br>",$a, $b);
printf("10진법 : a = %d, b= %d <br>",$a, $b);
// 2진수 => 10진수 변환
echo "2진수(0b11111111) => 10진수(".bindec("0b11111111").")<br>";
// 10진수 => 2진수 변환
echo "10진수(8) => 2진수(".decbin("8").")<br>";
?>
결과
2진법 : a = 00000001, b= 11111111
10진법 : a = 1, b= 255
2진수(0b11111111) => 10진수(255)
10진수(8) => 2진수(1000)
관련함수) 2진수를 10진수로 변환합니다.
number bindec ( string $binary_string )
bindec() 함수는2진수 문자열을 입력하면 10진수 숫자값을 반환합니다.
관련함수) 10진수를 2진수로 변환합니다.
string decbin ( int $number )
decbin() 함수는 입력값으로 10진수 숫자값을 입력시 16진수 문자열을 반환합니다.
정수는 8진수로 값을 표현할 수 있습니다.
8진법은 0~7까지의 숫자로 표현한 값을 말합니다. PHP에서는 8진법으로 변수에 저장을 하기 위해서는 숫자앞에 0을 하나더 적어 줍니다.
|문법|
$a = 0123; //10진수로 83
$b = 010; // 10진수로 8
예제 파일 int-05.php
<?php
// 8진법으로 변수에 값을 저장합니다.
// 8진법은 0로 시작합니다.
$a = 0123; //10진수로 83
$b = 010; // 10진수로 8
// 2진수를 8bit 형태로 출력합니다.
printf("8진법 : a = %o, b= %o <br>",$a, $b);
printf("10진법 : a = %d, b= %d <br>",$a, $b);
// 8진수 => 10진수 변환
echo "8진수(123) => 10진수(".octdec("123").")<br>";
//10진수 => 8진수 변환
echo "10진수(8) => 8진수(".decoct("8").")<br>";
?>
결과
8진법 : a = 123, b= 10
10진법 : a = 83, b= 8
8진수(123) => 10진수(83)
10진수(8) => 8진수(10)
관련함수) 10진수를 8진수로 변환합니다.
string decoct ( int $number )
decoct() 함수는 입력값으로 10진수 숫자값을 입력시 8진수 문자열을 반환합니다.
관련함수) 8진수를 10진수로 변환합니다.
number octdec ( string $octal_string )
octdec() 함수는 8진수 문자열을 입력하면 10진수 숫자값을 반환합니다.
정수는 헥사 값인 16진수로 값으로 표현할 수 있습니다.
16진법은 0~9, A~F 의 값을 가집니다. PHP에서는 16진법으로 변수에 저장을 하기 위해서는 숫자 앞에 0x를 같이 적어 줍니다.
|문법|
$a = 0x01;
$b = 0xa8;
$b = 0xff;
예제 파일 int-06.php
<?php
// 16진법으로 변수에 값을 저장합니다.
// 16진법은 0x로 시작합니다.
$a = 0x01;
$b = 0xa8;
$b = 0xff;
// 2진수를 8bit 형태로 출력합니다.
printf("16진법 : a = %x, b= %x, c= %x <br>",$a, $b, $c);
printf("10진법 : a = %d, b= %d, c= %d <br>",$a, $b, $c);
// 16진수 => 10진수 변환
echo "16진수(a8) => 10진수(".hexdec("a8").")<br>";
//10진수 => 16진수 변환
echo "10진수(255) => 16진수(".dechex(255).")<br>";
?>
결과
16진법 : a = 1, b= ff, c= 0
10진법 : a = 1, b= 255, c= 0
16진수(a8) => 10진수(168)
10진수(255) => 16진수(ff)
|관련함수| 16진수를 10진수로 변환합니다.
number hexdec ( string $hex_string )
hexdec() 함수는 16진수 문자열을 입력하면 10진수 숫자값을 반환합니다.
|관련함수| 10진수를 16진수로 변환합니다.
string dechex ( int $number )
dechex() 함수는 입력값으로 10진수 숫자값을 입력시 16진수 문자열을 반환합니다.