분류 전체보기

    [컴퓨터 구조] 보수(Complement)

    [컴퓨터 구조] 보수(Complement)

    보수(Complement) 보충을 해주는 수를 의미한다. 주로 뺄셈과 논리 계산에 사용한다. 이진법을 예로 들면, 어떤 이진수를 커다란 2의 제곱수에서 빼서 얻은 이진수를 2의 보수라 한다. 2의 보수 (Two's Complement) 주어진 이진수보다 한 자리 높고, 가장 높은 자리가 1이며, 나머지가 0인 수에서 주어진 수를 빼서 얻은 수가 2의 보수이다. 대부분의 산술연산에서 원래 주어진 숫자의 음수처럼 취급된다. 예를 들어 8비트로 이진수를 표기할 때는 0부터 255까지의 숫자를 나타낼 수 있다. 하지만 2의 보수법을 사용하면, 맨 앞 비트를 부호 비트로 사용하여 -128부터 127까지의 숫자를 나타낼 수 있다. (맨 앞이 0이면 양수, 1이면 음수) 2의 보수 계산법 다음과 같은 두 가지 과정만..

    [컴퓨터 구조] 데이터의 종류(Data Types)

    [컴퓨터 구조] 데이터의 종류(Data Types)

    수치 코드(Numeric Code) 수치만을 표현할 수 있는 코드로, 대표적으로 2진 코드*가 있다. 가중치 코드와 비가중치 코드로 나뉜다. 2진 코드*: 코드 알파벳(코드 표현 심볼)이 단지 2개의 요소 [0, 1] 으로만 이루어진 부호 1. 가중치 코드 2진수 각 자리에 정해진 값이 있는 것을 의미한다. 대표적으로 BCD 코드(Binary Code Decimal, 2진 부호화 10진수)가 있다. 말 그대로 10진수를 2진수로 나타낸 것이며, 다른말로 8421 코드라고도 불린다. 2. 비가중치 코드 2진수 각 자리에 정해진 값이 없는 것을 의미한다. 대표적으로 BCD 코드에 3(0011)을 더하여 만든 3초과 코드(Excess-3 Code), BCD 코드의 이웃한 두 개의 비트를 각각 X-OR 연산하여..

    [Java] Period 클래스로 날짜 차이 계산하기

    [Java] Period 클래스로 날짜 차이 계산하기

    특정 타임스탬프를 기준으로 날짜 차이를 계산해야 할 때가 있습니다. 이 작업을 직접 구현하기에는 매 달마다 일 수가 다르고, 윤년까지 고려해야 하기 때문에 번거롭습니다. Period 클래스의 between 메소드를 이용하면, 이를 간단히 해결할 수 있습니다. LocalDateTime 객체에 [년, 월, 일, 시, 분, 초] 정보를 임의로 저장하여 테스트해보겠습니다. 1. 평년일 때 public static void main(String[] args) { System.out.println("평년(2023) 테스트"); LocalDateTime startDT = LocalDateTime.of(2023, 2, 28, 0, 0, 0); LocalDateTime endDT = LocalDateTime.of(202..

    [컴퓨터 구조] 디지털 논리 회로

    [컴퓨터 구조] 디지털 논리 회로

    1. 디지털 컴퓨터 데이터를 수치화하여 처리하는 컴퓨터.사칙 연산이 바탕이 되며 연속적인 양의 표현이 불가능하므로 수치로 변환하여 나타낸다. 보통 컴퓨터라고 하면 디지털 컴퓨터를 가리킨다. 컴퓨터는 하드웨어와 소프트웨어 두 부분으로 구성된다. 하드웨어: 컴퓨터의 모든 전자 제품과 주변 장치를 구성하는 전자기적 부품들을 말한다. 소프트웨어: 컴퓨터의 다양한 정보 처리 작업을 수행하는 명령어와 데이터로 구성된다. 2. 논리 게이트 전자공학에서 논리 게이트(=논리 회로)는 부울 대수를 물리적 장치에 구현한 것으로, 하나 이상의 논리적 입력값에 대해 논리 연산을 수행하여 하나의 논리적 출력값을 얻는 전자회로를 말한다. AND, OR, NOT의 기본 부울 대수를 수행하며, 이 기본 부울 대수들의 결합으로 복합적인..

    [네트워크] Blocking, Non-blocking / Synchronous, Asynchronous

    [네트워크] Blocking, Non-blocking / Synchronous, Asynchronous

    I/O 작업이란? 주로 파일의 입출력을 다룰 때 흔히 볼 수 있다. 네트워크에서도 흔히 볼 수 있는데, 소켓의 read와 send가 그 예시이다. 두 대 이상의 컴퓨터끼리 네트워크 통신을 할 때, 한 쪽에서 send하고 다른 쪽에서 read하는 과정을 통해 통신한다. I/O 작업은 User 레벨에서 직접 수행할 수 없고 실제 I/O 작업을 수행하는 위치는 Kernel(운영체제)에서만 가능하다. 유저 프로세스는 커널에게 요청을 하고, 작업 완료 후 커널에 반환하는 결과를 기다린다. 소켓(Socket)이란? 네트워크 상에서 동작하는 프로그램 간 통신의 종착점이다. 간단히 말해, 특정 문자들을 조합하여 만든 네트워크 주소이다. 소켓은 프로세스가 네트워크를 통해 데이터를 보내거나 받기 위한 창구 역할을 한다. ..

    [네트워크] IP 주소와 IPv4

    [네트워크] IP 주소와 IPv4

    IP 주소 인터넷 계층의 IP 프로토콜은 IP 주소를 사용하여 호스트나 네트워크 장비를 식별한다. 1. 인터넷에 접속한 컴퓨터와 라우터에 고유한 IP 주소를 할당한다. 2. 그 IP 주소를 사용해서 컴퓨터를 특정하거나 통신 상대방으로 지정한다. 따라서, 인터넷에 연결된 모든 컴퓨터나 라우터의 IP 주소는 유일해야 한다. 이는 전세계의 인터넷 주소를 관리하는 인터넷 할당번호 관리기관(IANA, Internet Assigned Numbers Autority)에서 관리한다. IP 프로토콜에서는 현재 IPv4의 주소체계를 사용하고 있다. 일반적으로 IP 주소라 하면 IPv4를 의미한다. 하지만 스마트폰, 사물 인터넷 등 IP 주소를 사용하는 기기가 폭발적으로 증가하면서 IPv4 보다 월등히 많은 IP 주소를 할..

    [네트워크] TCP / UDP 의 header 분석

    [네트워크] TCP / UDP 의 header 분석

    TCP / UDP 란? 전송계층에서 사용하는 프로토콜입니다. 사용하는 목적은, 목적지 장비까지 전송한 패킷을 상위의 특정 응용 프로토콜에 전달하는 것입니다. TCP(Transmission Control Protocol) TCP는 수신한 세그먼트에 에러가 발생하면 재전송을 요구하여 에러를 복구합니다. 이러한 기능을 가진 프로토콜을 '신뢰성 있는 프로토콜'이라고 합니다. 따라서 에러 확인 및 복구를 위한 정보를 확인해야 하므로 처리 속도가 느립니다. UDP(User Datagram Protocol) UDP는 에러가 발생한 세그먼트는 폐기시킵니다. 이처럼 에러 복구 기능이 없는 프로토콜을 '신뢰성 없는 프로토콜' 이라고 합니다. 따라서 에러 확인 및 복구를 위한 절차가 불필요하므로 처리 속도가 빠릅니다. TC..

    백준 플래티넘 달성 후기

    백준 플래티넘 달성 후기

    오랜만에 처음 알고리즘을 풀었던 기록을 보았다. 공교롭게도 7월 14일에 첫 문제를 풀었으니, 정확히 5개월 걸려 브론즈4에서 플래티넘을 갔다! 플래티넘을 가면서 많은 굴곡이 있었다. 특히 멘탈적인 부분과, 알고리즘을 대하는 태도. 이 과정들을 잊어버리기 전에 기록하기로 했다. 1. 첫 플래티넘 문제 풀이 (8/14) 알고리즘을 처음 배우는 한 달 동안은 의욕이 엄청 앞섰다. 특히 최적해를 찾는 DP 알고리즘은 수학의 점화식 문제를 푸는 듯한 느낌을 받았다. 어렸을 때부터 수학을 좋아해서 그랬는지 모르겠다. 아무튼 이 때 DP 문제를 엄청 많이 풀었다.. 그렇게 실버4였던 나는 플래티넘 DP문제에 도전했고, 6시간만에 문제를 풀어냈다. 이 날을 계기로 알고리즘 실력에 대한 자신감을 많이 올렸던 것 같다...