C#/CS

CS (1) : 비트 연산, 인스턴스

Cathedral8293 2025. 3. 21. 22:13



이 자료구조에서 제일 중요하게 봐야할 것은 byte(크기), 1byte 당 8bit 가 들어가므로 비트 연산시 왼쪽을 shift할지 오른쪽으로 shift할지 또는 shift시 bit범위를 넘어가는지 등 다양하게 고려해야한다. shift연산 말고도 합 곱 차 등 사칙연산도 있고 bitmask를 이용한 연산이 있는데 이건 아마 전자 즉 컴퓨터 자체 스펙이 의한 알고리즘에 가깝다. 전자에서 논리회로를 컴퓨터 문법으로 재창조시킨 것으로 이해가 된다.

이전 대학에서 논문을 쓸때 python에서 opencv를 이용한 cv2.bitwise 같은 비트마스크 연산을 했었는데 이런 뜻이었다는 것을 3년이나 지나고 알게되었다. CS 역시 컴퓨터라는 하드웨어 위에서 시작이 된다는 것을 생각하면 당연한 것이었다.

어셈블리어를 잘 알지는 못하지만 문법을 조금 보면 이전 ic칩을 이용한 AVR 프로그래밍엣 사용했던 pcm 제어와 비슷한 느낌을 받았다. 즉 결국은 하드웨어에 친숙하게 프로그래밍을 해주는 것이 로우레벨 프로그래밍이라는 것을 새삼 느끼게 되었다.

위 학습과 더불어 C#의 인스턴스라는 단어와 DB에서의 인스턴스라는 단어를 연관시켜 생각하지 않고있었는데 객체지향에 대해 생각해보다 객체지향이라는 언어는 클래스라는 설계도가 있듯이 DB에도 설계가 있고 그 설계에 따라 인스턴스를 생성하듯 객체지향언어에서도 클래스에서 객체 즉 인스턴스를 만든다. 이런 것을 보면 왜 프로그래밍 언어 한 개를 모두 습득하면 다른 언어를 습득하는데 좀 더 쉬울 것이라고 했던 선생님의 말씀이 떠올랐다.

언어를 습득했다는 것은 CS를 포함하여 전체가 어떻게 돌아가는지 이해가 된다는 것이고 그렇기 때문에 다른 언어에서도 비슷한 방식의 다른 문법이니 익히기가 쉽다는 말이다.

제대로 CS를 보기 시작한지는 이제 하루지만 CS라는 것을 예전 전공과 비교하면서 이해하려고하니 확실히 이해가 빨리된다.

졸업을 하고 프로그래밍 언어를 CS 생각없이 그냥 문법대로 알아가려했던 시간들이 아쉽긴하지만 그랬던 경험이 있었고 그 당시 어렵게 이해하려고 했던 내가 있었기에 지금 이렇게 이해할 수 있는 내가 있다고 생각한다.

'C# > CS' 카테고리의 다른 글

CS (6) : IP주소  (0) 2025.05.07
CS (5) : 소켓통신  (0) 2025.04.21
CS (4) : 참조형식, 값형식  (0) 2025.04.20
CS (3) : 오버로드, 오버라이드, 상속  (0) 2025.04.20
CS (2) : 포인터 1차, 자료형 1차  (0) 2025.03.21