Unsigned : 부호가 없다는 뜻으로 음의 정수는 표현이 불가능하다.
Signed : 양의 정수, 0, 음의 정수 모두 표현이 가능하다.
부호 표현이 가능한지에 따라 표현 가능한 수의 범위가 달라진다.
1byte = 8bit = 2^8 = 256 (0 ~ 255)
11111111 + 00000001 = 100000000 -> 8bit를 넘는 크기로 정확한 결과를 저장할 수 없다. -> 오버플로우 발생 -> 맨 앞 비트를 날리고 00000000만 저장된다.
즉, 오버 플로우가 발생하면 다시 0부터 수가 시작된다.
부호가 있는 정수를 표현하기 위해서 8비트 중 1비트를 부호를 표현하는 비트로 사용한다.(0이면 양수, 1이면 음수)
따라서 숫자를 표현하는 비트는 7개 이므로 2^7, 128개의 수를 표현하게 된다.
부호 절대값 표기법 - 최상위 비트만 사용해 부호를 구분한다. 양수는 0 ~ 127, 음수는 -0 ~ -127 이다.
여기서 문제점은 0이 2개인 것이다. 같은 0이지만 비트의 패턴이 달라진다. (00000000 = 10000000)
2번째 문제는 양수와 음수를 더하면 비트패턴을 더하는 것으로 표현이 불가능하다. (1 + (-1) = 00000001 + 10000001 = 10000010 = -2) -> 컴퓨터는 덧셈만 가능하기 때문이다.
'프로그래밍 > 이산 수학' 카테고리의 다른 글
실수 - 고정 소수점, 부동 소수점 (0) | 2023.01.02 |
---|---|
문자 - ASCII, EUC, Unicode, UTF-8 (0) | 2022.12.30 |
보수 - 10, 9, 2, 1의 보수 (0) | 2022.12.29 |
데이터 표현 방식 - 비트, 바이트 (0) | 2022.12.24 |
숫자 체계 - 진법 Decimal (0) | 2022.12.10 |