์ƒˆ์†Œ์‹

๐Ÿ‘ฉ‍๐Ÿ’ป C

C ์–ธ์–ด - ์ •์ˆ˜, ์‹ค์ˆ˜์˜ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ, ์–ธ๋”ํ”Œ๋กœ์šฐ (overflow , underflow)

  • -

 

*์˜ค๋ฒ„ํ”Œ๋กœ์šฐ (overflow) : ๋ฉ”๋ชจ๋ฆฌ์— ํ‘œํ˜„ ๋ฒ”์œ„๋ฅผ ์ดˆ๊ณผํ•˜๋Š” ์ˆ˜์˜ ๊ฐ’์„ ์ €์žฅํ• ๋•Œ ๋ฐœ์ƒ

*์–ธ๋”ํ”Œ๋กœ์šฐ (underflow) : ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ‘œํ˜„ ๋ฒ”์œ„๋ณด๋‹ค ์ž‘์€ ์ˆ˜์˜ ๊ฐ’์„ ์ €์žฅํ• ๋•Œ ๋ฐœ์ƒ

์ฆ‰, ์•„๋ž˜ ์‚ฌ์ง„(ํ‘œ)์˜ ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚œ ๊ฐ’์„ ์ €์žฅํ•˜๋ฉด ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ๋ฐ ์–ธ๋”ํ”Œ๋กœ์šฐ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

*๋ฐ์ดํ„ฐ ํƒ€์ž…๋ณ„ ํ‘œํ˜„ ๋ฒ”์œ„ 

 

๋‘๋ฒˆ์งธ ์ค„์— ์žˆ๋Š” unsigned char์— ๋ฒ”์œ„๋ฅผ ๋ฒ—์–ด๋‚œ ๊ฐ’์ธ 256์„ ๋„ฃ์–ด๋ณด๋ฉด

#include <stdio.h>

int main(void){
    unsigned char a = 256;
    printf("%d", a);
}

์ถœ๋ ฅ>>>>>>>> 0

0์ด ์ถœ๋ ฅ๋œ๋‹ค.

 

์–ธ๋”ํ”Œ๋กœ์šฐ์ผ ๊ฒฝ์šฐ, ์‹œ๊ณ„ ๋ฐ˜๋Œ€๋ฐฉํ–ฅ์œผ๋กœ ์ˆซ์ž๊ฐ€ ๋ฒ—์–ด๋‚œ๋งŒํผ ์ด๋™ํ•˜๊ฒŒ ๋˜๊ณ ,

์˜ค๋ฒ„ํ”Œ๋กœ์šฐ์ผ ๊ฒฝ์šฐ, ์‹œ๊ณ„๋ฐฉํ–ฅ์œผ๋กœ ์ˆซ์ž๊ฐ€ ๋ฒ—์–ด๋‚œ๋งŒํผ ์ด๋™๋˜์–ด ํ‘œํ˜„๋œ๋‹ค. 

์ฆ‰, 256์€ 1๋งŒํผ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ๋œ๊ฒƒ์ด๋ฏ€๋กœ, ์‹œ๊ณ„๋ฐฉํ–ฅ์œผ๋กœ ํ•œ์นธ ์ด๋™ํ•˜์—ฌ 0์ด ๋œ๊ฒƒ์ด๋‹ค.

 

 

*์‹ค์ˆ˜์ธ ๊ฒฝ์šฐ์—๋Š” ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๊ฐ€ ์ผ์–ด๋‚˜๋ฉด +inf(infinity) ํ˜น์€ -inf๋กœ ์ถœ๋ ฅ๋˜๊ณ , ์–ธ๋”ํ”Œ๋กœ์šฐ๊ฐ€ ์ผ์–ด๋‚˜๋ฉด 0 ๋˜๋Š” ์“ฐ๋ ˆ๊ธฐ๊ฐ’์œผ๋กœ ์ถœ๋ ฅ๋œ๋‹ค.

 

 

 

*์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋กœ ์ธํ•ด ๋ฌธ์ œ๊ฐ€ ๋œ ์‚ฌ๋ก€

newspeppermint.com/2014/12/16/binary-bug/

 

๊ฐ•๋‚จ์Šคํƒ€์ผ์€ ์–ด๋–ป๊ฒŒ ์œ ํŠœ๋ธŒ ์กฐํšŒ์ˆ˜ ์ธก์ • ์„œ๋ฒ„์— ๋ฌธ์ œ๋ฅผ ์ผ์œผ์ผฐ๋‚˜

์‹ธ์ด์˜ ‘๊ฐ•๋‚จ์Šคํƒ€์ผ’ ์ธ๊ธฐ๋Š” ์ƒ์ƒ์„ ์ดˆ์›”ํ•ฉ๋‹ˆ๋‹ค. ์ ์–ด๋„ ์œ ํŠœ๋ธŒ ์ฝ”๋“œ์— ์˜ํ•˜๋ฉด ํ™•์‹คํžˆ ๊ทธ๋žฌ์ฃ . ์œ ํŠœ๋ธŒ ์กฐํšŒ์ˆ˜๊ฐ€ 2,147,483,647 (21์–ต) ์„ ๋„˜์–ด๊ฐ€๋ฉด์„œ ์กฐํšŒ์ˆ˜๋ฅผ 64๋น„ํŠธ ์ˆซ์ž๋กœ ๋ฐ”๊พธ์–ด 9,223,372,036,854,7

newspeppermint.com

 

Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.