넷북을 지르닷~~ :: 2010/02/08 22:50![]() 토요일 아침에 컴퓨터 책을 보다가 문득 넷북이 있으면 컴퓨터 공부를 좀 더 하지 않을까 하는 생각을 했다. 과연 공부를 많이 할지는 의문이지만, 여튼 급 땡겨서 인터넷을 검색하고 저렴하게 구입해서 우분투를 설치했다는 블로그 글을 봤다. 그리고 찾아봤는데 중소 기업이어서 브랜드 인지도는 낮을지 모르겠지만, 제품 자체는 동급에 비해서 저렴한 것으로 보여서 조금은 성급하게 결제를 했다. 그리고 배송은 너무나도 빨리인 다음날 일요일에 도착했다. 우분투 넷북용을 다운받고 USB 메모리 스틱을 이용해서 설치 성공~!! 무선 인터넷도 되고 네이버 같은 무거운 페이지도 모두 웹브라우저에서 보인다 ㅋㅋ avi 파일 하나를 다운 받아서 테스트 했는데 코덱이 없다고 하는데, 동영상 문제 빼고는 딱히 윈도우 못지 않고 좋당..^^ 참고적으로 38만원쯤 가격에 8만원 쯤을 더 줘서 360GB HDD 대신 30GB SSD로 주문했다. |
||
Odroid 도착! :: 2009/11/07 01:252009.11.07 금요일 지난 10월에 이솝을 통해 385,000원의 나름 거금을 주고 구입한 Odroid(오드로이드) 타겟이 드디어 오늘 도착했다. 배터리를 넣고 전원을 켜고 보이는 안드로이드 메인 화면~~ 오~~ 예전에 Dekstop PC에 포팅하던 기억이 새록새록... ㅎㅎ 암튼 이제 내 마음대로 만져볼 수 있는 공부 겸용 장난감이 생겼다~ ㅋ <아래 사진 출처 : 이솝(www.aesop.or.kr)> ![]() |
||
IEEE Floating-Point Format :: 2009/09/13 21:32어쩌다보니 Float 변수 값의 구조를 알아야 할 필요가 생겼다.
그래서 관련해서 프로그램도 짜 보고 인터넷도 찾아보고 그 결과를 여기에 정리한다. 1. IEEE Floating-Point Format 우선 Float Format이 어떻게 되어 있는지 알아야 한다. HP 링크에서 발췌한 다음 Format을 보자. ![]() 여기서 s는 sign 값이고, exp 값에서 127을 뺀 값이 2진수 값으로 처음 '1' 이 있는 위치이다. 그리고 그 처음 '1' 이후의 값들이 mantissa의 값이다. 2. 분석 예제 아래와 같이 일부 값에 대한 Floating 값을 분석해 보자. 알다시피 10진 정수 부분은 2진수로 계산하여 표현하기가 싶다. 하지만 소수 부분을 2진수로 표현하려면 2로 나누는 것이 아니라 2를 곱해가며 그 값을 확인해야 한다. 참고적으로 하다보면 2를 곱하다보니 2, 4, 8, 6 (1001)이 반복되는 경우가 쉽사리 발생함을 확인할 수 있다. 여하튼 계산 방법은 링크를 참조하고 실제로 계산하면 다음과 같다. 0.1 -> 0b 0001 1001 1001 1001 0.6 -> 0b 1001 1001 1001 1001 2.3 -> 0b 10 0 1001 1001 1001 1001 반복함을 보이고자 일부러 1001를 하나의 묶음으로 구분해보았다. 사실 여기에서 중요한 것은 반복이 아니라 정수 부분이 있는 경우와 없는 경우 모두에 대해서 소수 부분과 같이 일렬로 나열 했을 때 첫 번째 1이 몇 번째 있는 가이다. 위에서 0.1과 0.6은 첫 번째 '1'이 각각 4 번째, 1 번째에 있다. 그런데 이는 소수에 대해서이므로 실제로는 각각 -4 번째, -1 번째가 된다. 그리고 2.3의 경우 처음 10은 정수 부분 2를 나타내는 것으로 처음 '1'이 2 번째가 된다. 즉, 2.3의 값에 대해서 처음 2개 숫자는 정수 부분이고 나머지는 소수 부분이다. 그렇다면 실제 Float Format에서는 어떻게 저장될까? 위에서 이미 살짝 언급했지만, 처음 '1'이 있는 위치값에 +127을 해서 exp에 저장하고, 처음 '1'을 제외한 나머지 값을 mantissa에 저장한다. 따라서 위의 값에 대해서 mantissa 값은 다음과 같다. 0.1 -> 0b (0001 제외) 1001 1001 1001 0.6 -> 0b (1 제외) 001 1001 1001 1001 2.3 -> 0b (1 제외) 0 0 1001 1001 1001 3. Test Program 위의 이론을 확인하기 위해서 C 언어 테스트 프로그램을 작성해서 확인했다. 실제 코드와 몇 가지 값에 대한 결과를 첨부한다. 처음에 char*로 하나씩 읽었는데 값이 32bit float 값의 하위 8bit 부터 읽어졌는데, 아래 주소의 소스를 보고 틀렸음을 확인했다. http://hisjournal.net/blog/160 더 나아가 위의 주소 소스의 해당 부분을 거의 그대로 이용하여 bit 단위로 표현하였을 밝힌다. 플래쉬 버전 업 이후로 테터툴즈와 버전 문제라고 하는데 여튼 업로드가 안 되어서 임시적으로 직접 올리고 링크한다. --> 소스 파일 : main.c --> 결과 파일 : float.JPG 참고자료 정리 1. HP 웹페이지 상의 IEEE Floating-Point Format http://docs.hp.com/en/B3901-90003/ch10s03.html 2. 소수점이 있는 실수(정수) 진수 변환 연습 http://math88.com.ne.kr/crypto/isan/2jinbup.html 3. Float 엿보기 http://hisjournal.net/blog/160 |
||



