Community

개발자 99% 커뮤니티에서 수다 떨어요!

← Go back
TIL Mission 2.연습문제 풀이
#pragmatic
2년 전
661
1

연습문제 16

간단한 현실 점검, 다음'불가능한'것들 중 무엇이 실제로 일어날 수 있는가?

  1. (표준 그레고리력에서) 한 달이 28일 보다 적은 것.

  2. stat(".",  &sb) == -1 (즉, 현재 디렉토리에 접근할 수 없다.)

  3. C++에서, a = 2; b = 3; 하지만 (a + b) 는 5 가 아님.

  4. 내각의 합이 180도가 아닌 삼각형.

  5. 1분이 60초가 아님.

  6. 자바에서, (a + 1) <= a

풀이 과정

  1. unix 시스템에서 cal명령어로 달력을 출력해보면 1752년 9월은 3일 부터 13일까지가 빠져있다. 이는 영국이 1752년에 그레고리력을 채택하면서 1752년 9월 2일 다음날을 9월 14일로 하였기 때문이다.

  2. chmod 커맨드를 이용하여 권한 변경이 가능하다. r(읽기),w(쓰기),x(실행) 권한을 모두 제거 하면 권한이 없어서 접근이 불가할 수 있다.

  3. c++은 연산자 오버로딩이 가능하다. a와 b가 임의로 만들 클래스 이고, +연산자의 의미를 새롭게 정의했을 수 있다.

  4. 유클리드 기하학에서 삼각형의 내각의 합이 180도라고 주장하지만 이를 실제로 증명할 수는 없다. 삼각형의 내각의 합이 180도가 아닌 현상을 밝히기 위한 학문이 비유클리드 기하학이다.

  5. 1초의 시간을 추가하는 윤초가 있다. 이는 1분이 60초가 아닌 61초가 될 수 있다

  6. 오버플로란 최대값의 범위를 넘어서서 가장 작은 값으로 바뀌게 되는 것을 말한다.
    8비트 정수형은 -128 ~ 127 사이의 값을 저장할 수 있다. 그런데 0111 1111(=127)에서 1을 더하게 되면 1000 0000인데, 이는 -127이 된다.

참고 링크

  1. https://terms.naver.com/entry.naver?docId=3568483&cid=58944&categoryId=58970

  2. 디렉토리 권한
    https://www.fwantastic.com/2019/12/linux-permission.html
    stat함수
    https://www.it-note.kr/173

  3. 연산자 오버로딩
    https://blog.hexabrain.net/177
    https://yeolco.tistory.com/119

  4. 내각의 합이 180도가 아닌 삼각형(youtube)
    https://youtu.be/RENA733tcgY

  5. 윤초
    http://www.korea-press.com/news/articleView.html?idxno=76641

  6. 오버플로
    https://namu.wiki/w/%EC%98%A4%EB%B2%84%ED%94%8C%EB%A1%9C

심화 조사


책에 있는 해답

  1. 1752년 9월은 30일이 아니라 19일밖에 없다. 그레고리 교황의 달력 개혁의 일환으로 달력의 날짜를 맞추기 위해 이렇게 만들었다.

  1. 다른 프로세스가 디렉터리를 없앴을 수도 있다. 디렉터리를 읽을 퍼미션이 없을 수도 있다. &sb가 잘못된 것일 수도 있다. 무슨말인지 알 것인다.

  1. 이 문제의 함정은 a 와 b 의 타입을 명시하지 않았다는 점이다. 연산자 오버 로딩 때문에 + , = , != 가 예상과는 다르게 동작할 수 있다. 또 a 와 b 가 동일한 변수를 가리키고 있을 수도 있다. 그럴 경우 두 번째 할당문이 첫 번째 할당문에서 저장한 값을 덮어쓸 것이다. 또한 프로그램에 동시성이 있는데 이에 대한 고려가 되지 않아서 a 의 값이 덧셈이 수행되기 직전에 바뀌었을 수도 있다. ·

  2. 비유클리드 기하학에서 삼각형 내각의 합은 180°가 아닐 수 있다. 구 표면에 그려진 삼각형을 생각해 보라. ·

  3. 윤초 leap second 때문에 61초일 수 있다. ·

  4. 오버플로 때문에 a +1의 값이 음수가 될 수 있다. (이것은 C나 C++에서도 일어 날 수 있다.)

1 comment