본문 바로가기

전체 글110

1의 보수와 2의 보수 컴퓨터 구조 초반부분 또는 기초 컴퓨터를 공부할 때 항상 나오는 1의 보수와 2의 보수란 무엇인가에 대해 간단히 정리해보려고 한다. 우선 1의 보수의 의미는 해당 bit에서 가장 큰 표현형을 나타낼 때 서로 보완 관계에 있는 수인데 이게 무슨말이냐 하면 10진수를 예로 들었을 때 10진수에서 1bit로 나타낼 수 있는 수는 9까지이다. 즉 a+b = 9를 만족하는 a와 b가 1의 보수 관계이다. 마찬가지로 10진수에서 2bit로 나타낼 수 있는 수는 99이므로 a+b=99를 만족하는 a와 b는 1의 보수 관계이다. 2의 보수의 의미는 최대 표현 자리수를 형성하는데 있어 보완 관계에 있는 수들인데 간단히 말하면 a+b=10, a+b=100 ... 을 만족하는 a와 b를 2의 보수관계라고 한다. 2진수의 경.. 2020. 11. 6.
컴퓨터와 2의보수 이 주제에 대해 안지는 꽤 오래되었지만 시간이 조금만 지나도 자꾸 까먹고 정확하게 이해를 못한것 같아 오늘 한번 제대로 정리하려고한다. 우선 2의 보수를 사용하는 이유는 0 때문인데 현실세계에서의 0은 부호가 딱히 없다. 그러나 컴퓨터에서는 음수와 양수를 나타내기 위한 방법중 하나로 제일 왼쪽비트에 0이면 양수 1이면 음수 이렇게 나타내는 방법이 있는데 이런식으로 나타낼경우 -0과 +0이 공존하는 문제가 있다. 하지만 2의 보수의 경우는 0이 하나만 존재한다. 4bit의 간단한 계산으로 증명해보자. 우선 1의보수는 +0을 나타내는 0000과 -0을 나타내는 1111이 이렇게 두가지가 있다. 2의 보수의 경우는 0000에 2의 보수를 취하면 1111(0을 1로 뒤집고) + 1을 해주면 10000이 나오는데.. 2020. 10. 30.
golang 정렬하기 golang으로 정렬하는 법을 찾다가 생각보다 복잡해서 정리할겸 포스팅을 쓰기로 했다. 테스트를 위한 간단한 string 배열이다. 자 이 배열을 정렬하기 위한 코드는? 이럴수가 엄청길다.. 파이썬은 .sort() 하나면 되는데.. 뭐 어쨌든 분석해보기로 하자. 우선 정렬을 위해 sort 모듈을 import 해야한다. 그리고 문제의 부분인데 우선 이걸 이해하기 위해서는 golang의 interface 개념이 있어야 하기 때문에 혹시 모른다면 공부를 하고 오자. sort.Sort()가 인자로 interface를 받기 때문에 Sort 함수에 데이터를 넣어주기 위해서는 interface를 구현해야 한다. 그렇기 때문에 인터페이스의 정의된 함수인 Len, Swap, Less 함수를 구현해야하고 이걸 구현하기 위.. 2020. 10. 22.
golang에서 HandlerFunc란? golang의 기본 패키지들을 이용하여 웹프로그래밍을 공부하던 도중 햇갈리는 부분이 있어서 정리하려고 한다. 바로 코드를 보면서 이해해보자. 위 코드는 golang을 이용한 웹프로그래밍의 hello world이다. 코드에서 보다시피 localhost:8080/hello 주소로 들어가면 hello world가 찍혀있는 걸 볼 수 있다. http.HandleFunc 함수의 경우 두번째 인자로 func(http.ResponseWriter, *http.Request) 형태로 이루어져 있는 함수를 받는다. 이 점을 기억해두면서 아래 코드들을 계속 보자. 차이점이 보이는가? http.HandleFunc 대신 http.Handle 함수를 사용하였고 이것도 실행된다는 것을 명확히 보여주기 위해 hello world 대.. 2020. 10. 19.