2010년 5월 22일 토요일

[C++] 비트연산자

C++에서는 bit연산자를 지원한다.
여기서 비트 연산자는 2진수에서 자주 쓰이는 연산을 말한다.
즉 and,or,xor,not이 그들이다.

1. and: A and B를 C++에서는 아래와 같이 계산한다.
Result = A & B

2. or: A or B를 C++에서는 아래와 같이 계산한다.
Result = A | B

3.xor: 이 A xor B를 C++에서는 아래와 같이 계산한다.
Result = A^B

4.not: not(A)를 C++에서는 아래와 같이 계산한다.
Result = ~A

나머지 bit연산자는 (예nor,nand등등) 이 기본적인 연산자로부터 파생하여 계산할수 있다.

[C++] 16진수 8진수 출력하기

C++은 C와 달리 cout이라는 출력방법을 쓰기 때문에 변수의 유형을 지정해줄수 없다.
그래서 cout << value << endl 을 그냥 실행하게 되면 변수의 유형 그대로 출력이 되게 된다.

그렇다면 C++에선 10진수 16진수 8진수등으로 출력할수는 없는것일까?
답은 아니다.

C++에서도 16,10,8진수중 하고싶은걸 골라서 출력할수 있다.

C++에서 16진수 출력방법
cout << hex << value

C++에서 8진수 출력방법
cout << oct << value

C++에서 10진수 출력방법(이건 default이기 때문에 위 연산자( hex와 dec)를 쓰지 않았다면 안써도 된다)
cout << dec << value

아쉽지만 C++에서는 이진수 출력은 지원해주지 않는다(C도 마찬가지 이다), 이진수는 스스로 프로그램을 짜서 출력하거나 이진수 관련 해더 파일을 불러서 그 라이브러리에 있는 함수를 써야 한다.

[Matlab] 메트릭스 역순으로 바꾸기

한 메트릭스를 역순으로 바꾸는데는 2가지 방법이 있다, 세로 역순과 가로 역순이다.
이 두가지에 대해서 각각 함수가 존제한다.

1.세로 역순
a = flipud(b);

예를 들어서 b = [1,2,3;2,7,6]이라면 a는 [2,7,6;1,2,3]이 된다. 말그대로 세로 역순이 된다.


2.가로 역순
a = fliplr(b);
예를 들어서 b = [1,2,3;2,7,6]이라면 a는 [3,2,1;6,7,2]가 된다. 말그대로 가로 역순이 된다.




2010년 5월 14일 금요일

[C++] VS 2005, VS 2008: fatal error C1902 에러 해결법

원래 잘 되던 Visual Studio(난 2008을 쓰고 있다) 가 잘 안된다

빌드할때 "fatal error C1902: 프로그램 데이터베이스 관리자가 일치하지 않습니다. 설치를 확인하십시오." 가 계속 뜬다.

인터넷에서 한동안 찾아본 결과 해결법은 아주 간단했다.

fatal error C1902 가 뜨는 이유는 컴파일러가 mspdb80.dll , mspdbsrv.exe , mspdbcore.dll 을 찾지 못해서 생기게 된다. 이 파일들을 찾아서 "VS설치경로\VC\bin"에 복사해주면 된다.
이 파일들은 "VS설치경로\Common7\IDE" 에 있다. 머 그냥 VS설치경로에서 search를 해도 금방 나온다.

만약에 이렇게 해도 문제가 해결되지 않을경우 아래의 방법들도 시도해보기를 추천한다.(밑에 방법들을 사용하기 전에 위 3파일을 VS설치경로\VC\bin"에 꼭 복사해 주어야 한다. )
1. cmd로 command창을 띄워 "VS설치경로\VC\bin"에 들어가 vcvars32.bat를 실행시켜준다.(꼭 command창을 사용하여 실행해야 한다.)
2. C:\windows\system32폴더 안에 있는 mspdb80.dll과 mspdbcore.dll을 지워준다. 이 두 파일을 지우면 시스템에 문제가 생길지 모르니(아직 생긴 문제는 없지만 혹시 모르니까..) 백업을 해두자.

이래도 해결되지 않으신 분들은 댓글 남겨주시기 바랍니다^^