전체 글 155

논리회로설계

1의 보수의 특징 : 1의 보수를 사용하여 음수를 표현하기로 약속을 하였을때, 이때의 장점은 음수전환이 빠르고, 오버플로가 발생하지 않는 경우에는 계산의 값도 올바르다는 이점이 존재한다. 하지만, 오버플로가 발생한다면 1을 더해주어야 한다는 단점이 존재한다. 2의 보수 : 2의 보수를 사용하여 음수를 표현한다면, 위의 1의 보수를 사용할 때의 단점인 오버플로가 발생할때 1을 더해주는 과정을 하지 않아도 된다. 그 이유는 2의 보수를 취하면서 1을 먼저 더해주기 때문이다. 이러한 보수 표현들은 양수일때에는 사용하지 않고, 음수를 표현 할 때에만 사용한다. 그리고 음수표현된 2의 보수의 값을 알고 싶을 때에는 그 수에 대하여 다시 2의 보수를 취하고, -인 값이 그 값을 뜻한다. 따라서 예를 들자면 1의 보..

논리회로 설계 2022.03.16

js 문법

템플릿 문자열은 문자열 안에 &{}를 활용하여 문자열안에 중괄호안의 결과값을 삽입한다. 이전에 다른 언어에서는 'asd' + a + 'ad' 라고 표현했다면, let word = a 'asd${word}ad' 이렇게 표현 할 수 있다. NaN = '숫자 자료형이지만, 숫자가 아닌 경우' 이에 예시는 let a = Number('word') 이렇게 나타낸다면 a는 NaN이 되는 것이다. 문자열에 대하여 숫자로 + 연산을 하게 되면, 숫자가 문자로 바뀌게 된다. === : 값과 자료형 모두가 같은지 비교 '51' === 51 : false == : 값이 같은지 비교 '51' == 51 : true || 연산자를 변수 초기화에 활용 let a = A || B 이때 A가 참이면 (정의가 되어 값이 들어가 있으면..

javascript 2022.03.14

논리회로 설계 (03)

컴퓨터의 수의 수 체계는 2진수로 이루어져 있다. 따라서 2진수로 표현하고 더하고 빼는 여러 연산을 실행하게 되는데, 여기서 문제가 발생한다. 음수의 표현을 정하는 것인데, 이는 할당된 메모리의 맨 왼쪽의 비트를 부호 할당 비트로 지정하여 0은 양수 1은 음수로 약속을 한다. 따라서 이 방법을 사용하면 4비트가 주어진다면 맨 앞을 부호 할당을 위해 빼기 때문에 나타낼 수 있는 수는 -7 ~ +7 까지가 된다. 그런데 본인이 음수의 표현이 필요 없다면 맨 앞의 비트를 부호 할당을 위해 빼지 않아도 된다. 그러면 온전한 4비트를 사용가능하게 되어 0 ~ 15까지 총 16개의 수가 표현이 가능하다. 이러한 수 체계에도 문제가 발생하는데, 음수와 양수를 더하거나 음수와 음수를 더할때에 앞의 부호 할당자와 뒤의 ..

논리회로 설계 2022.03.14

논리회로 설계 (02)

오늘은 논리회로 2주차를 공부하였다. 1주차에 고민하였던 ASIC vs FPGA 의 cost per chi은 각각의 상황에 따라서 달라진다. 결론은 각각의 한개의 칩만의 가격을 비교해 보자면 ASIC 칩이 더 쌀 수 도 있다. 그 이유는 칩의 가격은 웨이퍼 위의 면적에 따라 달라지기 때문에 FPGA 칩의 면적이 더 크다면 더 비쌀 수 있다. 하지만 앞 주차에 고민 한 결과와 같이 ASIC 칩은 한 두개만 살 수 없기 떄문에 시제품등을 제작할 때에 있어서 많은 양을 주문하기에는 비싸기에 FPGA 칩을 구매하는 것이 더 합리적일 수 있다. 그리고 디지털 시스템의 전체적인 구조에 대해서도 알아 보았다. 우리의 삶은 아날로그로 이루어져 있기에 이를 디지털로, 그리고 그 반대로 변환해 주는 것이 필요하다. 이를 ..

논리회로 설계 2022.03.13

C++ / 01

c++ 주석 방법 1) // 입력 2) /* */로 주석 처리 \는 그 다음줄과 이어준다 예시) // line splicing 의 예 \ (MACRO 정의) 이럴 경우 두 줄 다 주석처리가 된다. 식별자 : 식별자란 변수이름, 함수 이름, 클래스 이름들을 말한다. 식별자를 만드는 규칙 – 영문자 대/소문자, 숫자, 밑줄(_) 을 조합하여 만듦 • 영문자 대/소문자는 구별함 – 숫자로 시작해서는 안됨 – 키워드(keyword)는 식별자로 사용할 수 없음 – 예약된 식별자(reserved identifiers) • 다음과 같은 이름은 예약되어 있음 – 밑줄 한 개로 시작하고 그 다음에 영문자 대문자로 시작하는 이름 (예: _Reserved) – 연속된 두 개의 밑줄을 포함하는 경우 (예: __reserved..

C++ 2022.03.10

논리회로 설계 / 01

digital logic design digital signal - discrete (이산) analog signal -continuous (연속적) 디지털과 아날로그의 차이점은 아날로그는 연속적이고, 미분가능한 값들이지만, 디지털은 순간적인 미분 불가능한 값들이다. 위의 그림처럼 디지털 값들은 순간적으로 불연속적으로 변화하는 모습이다. 하지만 현실에서는 저렇게 표현된는 것이 불가능 하다. 전자의 흐름인 전류 조차도 저렇게 순간적으로 변화 하면 위의 부분이 조금더 튀게 뒤는 오버슈팅 이라는 현상이 발견된다. 따라서 실제로는 저 그래프에 근사하게 지연적으로 값이 변화하게 한다고 한다. 우리가 이런 디지털화를 공부하는 이유는 자연의 모든것은 아날로그 지만 우리가 정보를 전달하고 사용하는 것들은 디지털 체계로..

논리회로 설계 2022.03.07

합병정렬

합병정렬이란 퀵정렬을 보완해서 나온 정렬 방법이라고 생각된다. 퀵 정렬은 기준값을 세운 후 왼쪽 오른쪽에 각각에 나누면서 정렬을 한다. 따라서 나누면서 이진트리 형태를 띄게 된다. 이에 최악의 경우에는 시간복잡도가 N^2이다. 이를 개선하여 처음부터 나누어진 수들을 합치면서 정렬을 한다. 나뉜상태에서 하기 때문에 NlogN으로 시간 복잡도가 일정하다. 코드로 표현하자면 위의 설명과 같이 시간 복잡도는 NlogN이다.

algorithm 2022.03.06

퀵정렬

오늘은 퀵 정렬 알고리즘에 대해 알아보았다. 퀵 정렬 알고리즘의 아이디어는 기준(피벗)을 잡은 후 에 오름차순 정렬 기준으로 왼쪽에는 기준보다 작은 값, 오른쪽에는 기준보다 큰값을 배치 시켜 정렬시키는 것이다. 이를 토대로 코드를 구현해보자 붙여 설명하자면 맨 앞의 값을 기준점으로 잡은 후에 왼쪽에서 올라오면서 기준 보다 작은값을 탐색하고, 오른쪽에서 부터 내려오면서 기준값보다 큰 값을 탐색한다. 그리고 각각의 조건에 벗어나는 값들의 위치를 바꾼다. 이 동작을 각각 왼쪽, 오른쪽에서 내려오는 인덱스 값이 엇갈릴때 까지 진행한다. 엇갈리면 그지점의 값과 기준값의 위치(맨 처음)를 바꾼후에 그 바꾼 위치의 오른쪽 왼쪽 각각에 다시 똑같이 실행을 시킨다. 이 알고리즘에 시간복잡도는 반으로 쪼개서 왼쪽과 오른쪽..

algorithm 2022.03.06

버블정렬

오늘은 버블정렬을 공부하였다. 버블정렬은 선택정렬과 아주 유사한 방법을 사용한다. 선택정렬은 오름차순으로 정렬할때에 가장 작은 값을 가장 앞으로 가져온다는 해결방법을 사용했다. 이와 유사하게 버블 정렬은 나의 옆(주로 오른쪽)의 값과 비교하여 더 작은 값을 앞으로 배치하는 것이다. 예를 들어서 5 4 3 2 1 이라는 배열에서 위의 내용을 한번 하게 되면 결과값은 4 5 3 2 1 이렇게 5와 4 두 값만을 비교한 후에 그 두개의 위치만 바꾸는 것이다. 이를 배열을 한 번 다 순회를 하면 가장 큰 값이 가장 뒤로 가게 된다. 따라서 선택정렬은 가장 작은 값을 가장 앞으로 배치하는 것 이였지만, 버블정렬은 반대로 가장 큰 값들을 가장 뒤로 보낸다 라고 생각해도 될것 같다. 따라서 코드를 작성해 본다면 이렇..

algorithm 2022.03.05

정렬 (선택적 정렬) 알고리즘

오늘은 선택적 정렬 알고리즘에 대해 알아보겠다. 선택적 정렬은 오름차순으로 정렬한다는 것으로 생각했을때 "가장 작은것을 선택해서 제일 앞으로 보낸다"는 생각에 기초한다. 이 알고리즘을 간단히 작성한다 위의 알고리즘은 처음에 말했듯이 가장 작은 값을 가장 맨앞으로 라는 생각에 기초하여 반복문 두개를 돌면서 맨처음 부터 끝까지, 그다음 두번째 부터 끝까지 이렇게 시작하는 인덱스값을 1씩 증가시키면서 끝까지 돌면서 가장 작은 값을 앞으로 오게 하면서 오름차순 정렬을 이끌어냈다. 시간복잡도는 반복문을 두번 돌기 때문에 N^2 이다.

algorithm 2022.03.05