본문 바로가기

분류 전체보기85

1의 보수(One's Complement) 우선 보수에 대해 알아보기 전에 간단히 알아볼 개념들이 있다. 일단 진법의 밑수. 밑수는 각 진법에서 기호에 사용되는 숫자의 수를 밑수라고 한다. 10진법에서의 밑수는 10, 2진법에서의 밑수는 2, 8진법에서의 밑수는 8이다. 또한 모든 진법에서 밑수는 0부터 시작한다. 2진법에서의 밑수는 0과 1, 10진법에서의 밑수는 0, 1, 2, 3, 4, 5, 6, 7, 8, 9와 같이 10개이다. 이제 여기서 보수를 설명할 수 있다. 보수란, 두 수의 합이 진법의 밑수가 되게 하는 수라고 할 수 있다. 10진법에서 4의 10의 보수는 6이고, 2의 10의 보수는 8이다. 그렇다면 100에 대한 10의 보수는? 900이다, 10을 맞추는 게 아닌, 10진법에서 자릿수를 올라가게 하는 수라고 생각하면 된다. 이.. 2023. 3. 22.
2진수, 8진수, 10진수, 16진수 많이들 들어보았을 것이다. 인간은 10진법, 컴퓨터는 2진법. 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. 인간이 10진법을 쓰는 방법으로 숫자를 표기해 사용한다. 그렇다면 컴퓨터는 어떻게 2진법을 사용하는 것일까. 컴퓨터의 내부에는 수많은 트랜지스터가 존재하는데, 이 트랜지스터를 전기 신호를 통해 켰다 껐다 할 수 있다. 여기 트랜지스터가 켜지면 on(true), 꺼지면 off(false) 상태라고 볼 수 있다. 컴퓨터는 이 상태를 각각 1, 0으로 인식하고 이를 통해 2진법을 사용할 수 있는 것이다. 뭐 이런 건 차치하고, 왜 10진수가 아닌 다른 것들도 배워야 할까? 그 이유는 나중에 배울 비트 연산을 위해서이다. 비트 연산자를 통해 추후 비트 마스킹과 같은 기법들을 활용할 때가 오는데, .. 2023. 3. 21.
LinkedList 링크드 리스트는 메모리상에서 크기를 정해서 일렬로 입력되는 배열과는 다르게 자료의 논리적인 순서와 메모리 상의 물리적인 순서가 일치하지 않고, 개별적으로 위치하고 있는 원소의 주소를 연결하여 하나의 전체적인 자료구조를 이룬다. 즉, 논리적인 순서로는 첫번째에 있는 원소라도 메모리상에서는 가장 끝에 위치해 있을 수 있다는 것이다. 이를 가능하게 하는 것이 링크이다. 링크를 통해 원소에 접근하므로, 순차 리스트에서처럼 물리적인 순서를 맞추기 위한 작업이 필요하지 않다. 이는 곧 자료구조의 크기를 동적으로 조정할 수 있다는 것을 의미하고, 이를 통해 메모리의 효율적인 사용이 가능하게 된다. 오른쪽과 같은 논리적 순서라도 왼쪽과 같이 저장될 수 있다는 것이다. 링크드 리스트를 구성하는 것으로는 다음과 같이 설명.. 2023. 3. 21.
시간 복잡도 이전에 알고리즘의 복잡도에 대해 잠깐 알아보았는데 그 복잡도 중 시간 복잡도에 대해 더 자세히 알아보려고 한다. 공간 복잡도의 경우 해당 알고리즘이 얼마나 많은 메모리 공간을 필요로 하는지 어느 정도 이해할 수 있는데 시간 복잡도의 경우 반복문이 얼마나 겹쳐 있는지, 또 어떻게 도출해 나가는지에 따라 시간 복잡도가 달라지기 때문에 직관적으로 바로 파악하기 힘든 경우가 많다. 또한 하드웨어 환경에 따라 처리시간이 달라지기도 하고, 소프트웨어 환경에 따라 처리시간이 달라지기도 한다. 이를 단순한 함수로 표현하기 위해서 점근적 표기(Asymptotic Notation)를 사용한다. 이는 입력 크기인 n이 무한대로 커질 때의 복잡도를 간단히 표현하기 위해 사용하는 표기법이다. 이러한 표기에는 크게 O(Big-O.. 2023. 3. 21.