bash, sh쉘에서의 시스템변수, PS1 프롬프트 변경 등. sh쉘에서는 PS1을 수정해서 프롬프트를 변경하려 해도, 수정이 되지않는다. 아니, 정확히는 수정은 되지만, \u, \s, \t 등의 명령이 모조리 문자로 인식되어 쓸 수 없다. bash쉘에서는 PS1="\u@\s~$ " 으로 수정하면 사용자명과 쉘이름이 나오는 반면 sh쉘에서는 그저 \u@\s~$ 문자열이 프롬프트가 된다.
floating point system에서 지수부와 가수부의 개수 수치해석학을 공부하던 중 IEEE 754, 64bits floating point system에서 지수부와 가수부의 개수가 궁금해졌다. 처음 의문이 들기 시작한건 수치해석학 교재에 32비트 부동소수점수의 표현이 부호 1비트, 지수 7비트, 가수 24비트라고 써져있어서이다. 분명 기초 cs로 컴퓨터구조를 공부할땐, 1,8,23이였는데 이건뭐지 싶었다. 문제는 아직 더 있다. 더 나아가다보니 64비트 부동소수점수에서 부호 1비트, 지수 11비트, 가수 52비트는 같게 나왔지만, 사실은 가수부분은 1bit + 52bits로 53개의 bit를 가진다는 설명이있었다. 멘붕이다. 이게 뭔 소린가 싶다. 열심히 구글링해 stack overflow의 검색결과 64bit floating point system에서 mai..
부동소수점수는 왜 0.1을 표현못할까? ++IEEE 754, 부동소수점수와 고정소수점의 차이++소수점이하 2진수 변환++IEEE 754, 32비트와 64비트의 표현범위/ 소수점 이하 수들을 2진수로 변환하는 방법을 이해하면 쉽다.소수 부분을 2진수로 변환하기 위해선, 소수 부분이 0이 될때까지 2를 곱하게 된다.하지만, 정수부분을 변환하는 경우와는 다르게, 소수부분을 변환할 때에는 아무리 곱해도 0이 되지않는 경우가 생긴다.0.1이 바로 이런 경우인 것이다. 0.1에 2를 아무리 곱해도 소수부분을 없앨수는 없다.아무리 넓은 범위를 표현할 수 있는 부동소수점수도 결국 표현할 수 있는 범위의 한계가 있다.따라서 컴퓨터는 0.1을 2진수로 변환하는 중 표현범위의 한계에 다다르면 뒷부분은 날려버린다! double과 float에서의 0.1의 값이 다른..