728x90

신중히 생각해서 나누지 않고 바로 코딩에 들어갔더니 역시 구성이 마음에 들지 않는다. 쩝..
사소한 것을 코딩하더라도 천천히 생각해보고 하도록 하자!!

static을 사용해서 집합연산을 만들어봤는데 static에 관한 문법이 다른 언어들과 달라서 멈칫했었다.

element.h



mySet.h


mySet.cpp



insertSortWithSets.cpp

728x90

'Programming > C++은객체지향언어다' 카테고리의 다른 글

error C2220: warning treated as error - no object file generated  (0) 2011.07.29
g++ for windows  (0) 2008.11.07
ADT array 구현  (0) 2008.03.04
C++ (OOP개념들)  (0) 2008.02.26
C++ (객체)  (0) 2008.02.26
C++ (OOP개념)  (0) 2008.02.26
C++ (개요)  (0) 2008.02.26
728x90

컴퓨터가 정수를 표현하는 방식은 한가지만 있는 것이 아니다. 흔히 학교에서 배우는 방식은 처음 MSB로 음수, 양수를 표현하고 나머지 비트로 2의 보수법을 취하여 수를 계산하는 방식이다.
그런데 다른 방식도 많이 있다. 그중 하나가 bias를 이용하는 방식이다.(이름이 생각나지 않지만 이러한 방식은 부동소수의 지수를 나타낼 때 많이 사용된다.)

중심되는 숫자를 기준으로 그보다 작은 수는 음수, 큰 수는 양수로 계산하는 방식이다.
예를 들어 0~15까지 4자리 이진수로 나타내는 수가 있다고 하자.
여기에서 0은 0000이 아니라 중간 값인 1000이 된다.


10진수 MSB방식 bias방식
-8(최소) 1000 0000
-3 1101 0101
-2 1110 0110
-1 1111 0111
0 0000 1000
1 0001 1001
2 0010 1010
3 0011 1011
7(최대) 0111 1111

문제>0~65535까지의 양수값을 입력받아 -32768 ~ 32767까지의 수를
MSB방식의 16자리 2진수로 표현하라.
입력 : inputfile.txt
출력 : consol
입력파일에는 정수만 입력되며 0보다 작거나 65535보다 큰 값이 입력되면 오류메시지를 출력한다.

입력:
123
4561
7892
1
65535
65536
32768
32767
32769
-1

출력:
-32645 : 1000 0000 0111 1011
-28207 : 1001 0001 1101 0001
-24876 : 1001 1110 1101 0100
-32767 : 1000 0000 0000 0001
 32767 : 0111 1111 1111 1111
ERROR! Input value of 65536 is out range for this program.
32768 : 1000 0000 0000 0000
     0 : 0000 0000 0000 0000
    -1 : 1111 1111 1111 1111
     1 : 0000 0000 0000 0001
ERROR! Input value of -1 is out range for this program.
-32769 : 0111 1111 1111 1111


==============================
참고자료로 올린 cpp파일은 비트연산을 이용한 출력을 하고 있다.
스스로 문제를 풀어보고 내가 작성한 소스와 비교해보라.
시스템에 따라 컴퓨터가 MSB방식을 채택하고 있지 않은 경우도 있다.
이러한 경우에 대비하여 printToBinary함수를 어떠한 환경에서도 같은 결과를 출력할 수 있도록 수정해보자.
소스나 문제에서 잘 이해가 가지 않는 부분이 있다면 질문 남기도록.
728x90

+ Recent posts