문서 편집 권한이 없습니다. 다음 이유를 확인해주세요: 요청한 명령은 다음 권한을 가진 사용자에게 제한됩니다: 사용자. 문서의 원본을 보거나 복사할 수 있습니다. Magic Number [목차] == 스포츠 용어 == [[매직넘버(스포츠)]] 항목으로. == 물리학 용어 == 원자핵에서 양성자나 중성자의 수가 일정한 숫자가 되면 다른 원자핵에 비해서 안정해진다. 이를 매직넘버라고 한다. 현재 알려진 매직넘버는 2, 8, 20, 28, 50, 82, 126, 184 등이고 핵자껍질[* 전자껍질 모델과 비슷하지만 다른 원자핵의 모형이다] 모델로 부분적으로 이해된다. 만약 원자핵의 양성자와 중성자 갯수가 둘다 매직넘버일 경우 doubly magic number라고 하며 더욱 안정해진다. 즉, 비슷한 핵자 수를 가진 주변 원소에서는 방사성 붕괴를 하지만 이 핵은 안정한 핵이 되거나, 주변 원소보다 훨씬 더 긴 반감기를 가지게 된다. 양성자의 수만 보면 [[헬륨]](2), [[산소]](8), [[칼슘]](20), [[니켈]](28), [[주석(원소)|주석]](50), [[납]](82)이 있다. [[운비헥슘]](126)은 매직넘버에 드는 양성자 수를 가지고 있는데, 양성자의 개수로는 126을 만족시키고 중성자의 개수로는 또 하나의 매직넘버인 184를 만족시키는 새로운 원소를 만들 수 있다면 그 녀석은 고작 몇마이크로초 버티고 붕괴하는 것이 전부인 다른 [[초우라늄 원소]]와는 달리 제법 안정한 모습을 띄지 않을까 과학자들은 기대하고 있는 중. 이런 [[안정성의 섬]]에 드는 원소를 찾기 위해 과학자들은 끊임없이 노력하고 있다. 마법수라고도 번역한다. == 컴퓨터 프로그래밍 용어 == === 설명 없이 무작정 등장하는 상수 === 예를 들어서 학생의 학적 상태를 "1이면 재학, 2이면 휴학, 3이면 제적, 4이면 졸업"으로 나타낸다고 가정하자. 이 경우, "이 학생이 졸업했는가"를 따지기 위해 "학생.상태 == 1" 따위로 나타낼 경우, 이런 식으로 설명 없이 등장하는 상수를 바로 "매직 넘버"라고 한다. 얼핏 보면 매직 넘버를 사용하는 것이 코드가 짧아져서 편해 보일 거라고 생각할 수 있겠지만, 이런 짓을 하게 되면 유지보수에는 [[헬게이트]]가 제대로 열린다. 당장 예를 들어 "재학"을 나타내는 번호가 5로 바뀐다고 가정하면, 위와 같은 조건문이 수십 군데에서 등장할 경우 그 수십 군데를 일일히 찾아 가면서 1이라는 숫자가 어떤 의미로 쓰인 1인지 찾아내고 맞는 것만 정확히 고쳐야 한다. 어느 한 군데를 빼먹거나, 반대로 다른 의미로 쓰이는 1과 헷갈리는 경우의 참상은 [[더 이상 말할 필요가 없다]]. 그나마 주석이라도 달았으면 조금은 편해지겠지만, 그 주석마저 없거나, 한 술 더 떠 필드 이름이 전혀 직관적이지 않을 경우에는... 이쯤 하자. 괜히 프로그래밍 언어들에서 "상수"나 "열거형"의 개념이 주어지는 것이 아니다. === 자료 구조를 식별하기 위해 특정 값으로 맞춰지는 필드 === 특히 [[포인터]] 개념과 맞물려서 형 검사라는 개념이 안드로메다로 가버린 [[C(프로그래밍 언어)|C]] 언어에서 보통 사용되는 테크닉이다. 특정한 자료 구조를 조작하는 함수에서, 어떤 자료 구조의 포인터가 들어왔을 때, 그 포인터가 담고 있는 내용이 진짜로 그 구조로 되어 있는지는 아무도 모른다. 그 주소에 들어있는 것이 다른 자료구조일 수도 있고, 심한 경우에는 아예 포인터가 가리키고 있는 주소가 지금은 유효하지 않은 주소일 가능성도 있다. 하지만 포인터만 가지고 여기에 진짜 의도한 내용이 들어 있었는지 알 도리가 없기 때문에, 아예 자료구조에 잉여 필드를 하나 만들어서 그 필드를 특정한 비트 패턴(혹은 특정한 상수)으로 채워버려서, 그 필드에 의도한 값이 들어있는지만 검사하면 쉽게 형 검사 비슷한 것을 할 수 있다. 이 때 쓰이는 필드와 그 값을 "매직 넘버"라고 한다. 물론 [[객체 지향 프로그래밍]]의 개념이 완전히 정립된 뒤 나온 언어들의 경우, 형 변환 한 번 이뤄질 때마다 런타임에서 이런 과정을 전부 거치기 때문에 이런 삽질을 굳이 할 필요가 없다. === 파일 형식을 식별하기 위해 파일 맨 앞에 붙이는 특정 값 === 위 3.2번 항목과 비슷한 예로, 파일 첫머리에 이 파일이 어떤 형식인지를 기재해 확장자가 바뀌어도 올바르게 인식할 수 있도록 하는 기능을 한다. JPG 파일의 확장자가 BMP나 PNG 같은 걸로 바뀌어도 이미지 뷰어가 제대로 읽어낼 수 있는 건 이 매직넘버를 읽고 JPG 형식임을 알아냈기 때문. 매직넘버 문서로 돌아갑니다.