OpenAI의 정밀도 혁명: 환각 현상을 52.5% 줄인 'GPT-5.5 Instant'가 ChatGPT의 기본 모델로 공식 업데이트되었습니다. 엔비디아의 5GW 베팅: 엔비디아가 IREN과 파트너십을 맺고 글로벌 전역에 5기가와트(GW) 규모의 AI 팩토리 구축을 가속화합니다. Google I/O 2026 카운트다운: 오는 5월 19일 개최될 Google I/O에서 자율적 행동이 가능한 'Gemini 3'와 안드로이드 17의 AI 통합이 예고되었습니다. 글로벌 AI 확산: 한국의 생성형 AI 채택률이 지난 분기 대비 6.4%p 상승하며 글로벌에서 가장 가파른 성장세를 기록했습니다.
이진 탐색 트리(BST)는 왼쪽 < 루트 < 오른쪽 규칙을 따르는 이진 트리 기반의 탐색 자료구조
주요 연산은 탐색 / 삽입 / 삭제 / 개수 4가지이며, 삭제 연산이 가장 복잡함
순회 방법은 전위(루트→왼→오) / 중위(왼→루트→오) / 후위(왼→오→루트) 3가지
중위 순회를 하면 정렬된 순서(오름차순)로 데이터를 방문할 수 있음
탐색·삽입·삭제 평균 O(log n), 편향 트리(최악)에서는 O(n)으로 저하
실제 응용: 단어장 프로그램, 폴더 용량 계산 등
01 이진 탐색 트리(BST)란?
탐색(Search)은 일상에서도 매우 중요한 작업입니다. 사전에서 단어를 찾거나, 쇼핑몰에서 상품을 검색하는 것도 모두 탐색이죠. 컴퓨터에서 이 탐색 작업을 효율적으로 처리하기 위해 고안된 자료구조가 바로 이진 탐색 트리(BST, Binary Search Tree)입니다.
📖 이진 탐색 트리(BST) 정의 레코드의 집합에서 특정 레코드를 찾아내는 탐색에 특화된 이진 트리 기반의 자료구조. 배열과 선형 리스트의 단점을 보완하기 위해 연결리스트로 구성된 이진 트리를 사용하며, 원소의 삽입·삭제가 용이하다.
📌 탐색 관련 핵심 용어
용어
설명
레코드
자료를 체계적으로 관리하기 위해 구성한 일정한 단위 예) 학생 정보 1명분 (이름, 학번, 학과 등)
필드
레코드를 구성하는 하위 항목 예) 이름, 학번, 학과 각각이 필드
키(Key)
레코드를 구별하기 위한 고유한 값을 가진 필드 예) 학번처럼 중복이 없는 고유 식별자
파일
여러 레코드가 모여서 구성된 집합 예) 학생 전체 명부
📌 BST의 4가지 핵심 성질
번호
성질
①
모든 노드는 유일한 키를 가짐 (중복 없음)
②
왼쪽 서브 트리의 키들은 루트의 키보다 작음
③
오른쪽 서브 트리의 키들은 루트의 키보다 큼
④
왼쪽·오른쪽 서브 트리도 각각 이진 탐색 트리임 (재귀적 구조)
✓ 예시로 이해하기 루트가 18인 트리가 있다면: · 왼쪽 서브 트리 = 18보다 작은 값들 (예: 7, 12, 15) · 오른쪽 서브 트리 = 18보다 큰 값들 (예: 26, 22, 30) 이 규칙이 트리 전체에 재귀적으로 적용됩니다.
⚠️ BST의 한계 데이터 원소가 정렬되어 있어야 하며, 빈번한 삽입·삭제가 필요한 경우에는 부적합합니다. 삽입·삭제가 잦으면 트리가 한쪽으로 치우쳐 성능이 O(n)까지 저하될 수 있습니다.
02 BST의 4가지 연산
탐색 연산 Search
→
삽입 연산 Insert
→
삭제 연산 Delete
→
개수 연산 Count
🔍 탐색 연산 (Search)
탐색은 항상 루트 노드에서 시작하며, 찾는 키(key)값과 현재 노드의 키를 비교해가며 내려갑니다.
C 코드 — 노드 구조체 정의
#include<stdio.h> #include<stdlib.h>
// BST 노드 구조체 typedef struct TreeNode { int key; // 키(데이터) struct TreeNode *left; // 왼쪽 자식 포인터 struct TreeNode *right; // 오른쪽 자식 포인터 } TreeNode;
C 코드 — 재귀적 탐색 함수
TreeNode* search(TreeNode *root, int key) { if (root == NULL) return NULL; // 탐색 실패
if (key == root->key) // 탐색 성공 return root; else if (key < root->key) // 왼쪽 서브 트리로 재귀 탐색 return search(root->left, key); else// 오른쪽 서브 트리로 재귀 탐색 return search(root->right, key); }
📖 코드 포인트 · root == NULL : 찾는 키가 없는 경우(탐색 실패). 삽입 시에는 이 위치가 새 노드 자리가 됨 · 재귀 호출 : BST의 구조적 특성(서브 트리도 BST)을 활용해 같은 함수를 반복 적용 · 반환값 : 찾은 노드의 포인터를 반환. 없으면 NULL 반환
상황
동작
key == 루트의 키값
탐색 성공! 해당 노드가 찾는 노드
key < 루트의 키값
왼쪽 서브 트리로 이동하여 탐색 재시작
key > 루트의 키값
오른쪽 서브 트리로 이동하여 탐색 재시작
탐색 중 NULL(빈 노드) 도달
탐색 실패 — 해당 키는 트리에 없음
⏱️ BST 시간 복잡도 성능 비교
연산
평균 (균형 트리)
최악 (편향 트리)
최악이 되는 조건
탐색
O(log n)
O(n)
데이터가 오름/내림차순으로 삽입되어 트리가 한쪽으로 쏠릴 때
삽입
O(log n)
O(n)
편향 트리에서 삽입 위치를 찾기 위해 전체 노드를 순회해야 할 때
삭제
O(log n)
O(n)
편향 트리에서 후계자 탐색까지 전체 노드를 거쳐야 할 때
❌ 편향 트리(Skewed Tree)란? 예를 들어 1, 2, 3, 4, 5를 순서대로 삽입하면 모든 노드가 오른쪽으로만 연결됩니다. 이렇게 되면 트리가 사실상 연결 리스트와 동일해져서 BST의 장점인 O(log n) 성능을 전혀 살릴 수 없습니다.
이를 해결하기 위해 AVL 트리, 레드-블랙 트리 같은 자가 균형 BST가 고안되었습니다.
➕ 삽입 연산 (Insert)
✓ 삽입 연산의 핵심 원칙 BST에서는 같은 키 값을 갖는 노드가 없어야 합니다. 탐색에 실패한 위치 = 새로운 노드를 삽입할 위치 따라서 삽입 전에 반드시 탐색을 먼저 수행해야 합니다.
① 탐색 수행 삽입할 키로 탐색 시작
→
② 실패 위치 확인 탐색이 실패한 NULL 위치 확인
→
③ 노드 삽입 해당 위치에 새 노드 추가
슈도코드 (Pseudocode) — 삽입 연산 전체 흐름
insert (root, n)
if KEY(n) = KEY(root) // 중복 키 — 삽입 불가 then return;
else if KEY(n) < KEY(root) // 삽입 키가 더 작으면 왼쪽 if LEFT(root) = NULL then LEFT(root) ← n; // 왼쪽이 비었으면 바로 삽입 else insert(LEFT(root), n); // 아니면 왼쪽 서브트리로 재귀
else// 삽입 키가 더 크면 오른쪽 if RIGHT(root) = NULL then RIGHT(root) ← n; // 오른쪽이 비었으면 바로 삽입 else insert(RIGHT(root), n); // 아니면 오른쪽 서브트리로 재귀
C 코드 — 재귀적 삽입 함수
TreeNode* insert(TreeNode *root, int key) { if (root == NULL) { // 빈 자리 발견 → 새 노드 생성 TreeNode *n = (TreeNode*)malloc(sizeof(TreeNode)); n->key = key; n->left = n->right = NULL; return n; } if (key == root->key) // 중복 키 → 그냥 반환 return root; else if (key < root->key) // 왼쪽 서브트리로 재귀 root->left = insert(root->left, key); else// 오른쪽 서브트리로 재귀 root->right = insert(root->right, key); return root; }
📖 코드 포인트 · root == NULL 도달 : 탐색 실패 위치 = 새 노드를 삽입할 자리 · 중복 키 처리 : KEY(n) = KEY(root)이면 아무 작업 없이 바로 return (BST는 중복 불허) · 재귀 호출 : 삽입할 키와 현재 노드를 비교해 왼쪽/오른쪽으로 내려가며 빈 자리를 탐색
🗑️ 삭제 연산 (Delete) — 가장 복잡한 연산
노드 삭제는 BST에서 가장 복잡한 연산입니다. 삭제 후에도 BST의 성질(왼쪽 < 루트 < 오른쪽)을 반드시 유지해야 하기 때문입니다. 삭제할 노드의 자식 수에 따라 처리 방법이 달라집니다.
경우
처리 방법
Case 1 단말 노드(자식 없음) 삭제
가장 단순한 경우. 노드를 그냥 삭제하면 됨. 단, 부모 노드의 링크 필드(자식을 가리키는 포인터)를 NULL로 변경해야 함.
Case 2 자식이 하나인 노드 삭제
삭제할 노드를 제거하고, 유일한 자식을 부모 노드에 직접 연결. 삭제 노드가 부모의 왼쪽/오른쪽 자식인지, 자식이 왼쪽/오른쪽인지 모두 고려해야 함.
Case 3 자식이 둘인 노드 삭제
중위 후속자(Inorder Successor)를 찾아서 삭제 위치에 복사한 뒤, 후계자 노드를 삭제. 후계자 = 오른쪽 서브 트리의 최솟값 (또는 왼쪽 서브 트리의 최댓값)
📖 중위 후속자(Inorder Successor)란? 중위 순회(왼→루트→오) 기준으로 삭제 노드 바로 다음에 방문될 노드를 의미합니다. 이 값은 삭제 노드보다 크면서 가장 작은 값이므로, 그 자리에 들어와도 BST 성질이 유지됩니다.
· 중위 후속자 위치 : 오른쪽 서브 트리에서 가장 왼쪽(= 가장 작은) 노드 · 중위 전임자(Inorder Predecessor) : 왼쪽 서브 트리에서 가장 오른쪽(= 가장 큰) 노드
예) 노드 18 삭제 시 · 중위 후속자 = 오른쪽 서브 트리의 최솟값 → 22 · 중위 전임자 = 왼쪽 서브 트리의 최댓값 → 12 → 22 또는 12 중 하나를 18 위치에 복사한 뒤, 원래 22(또는 12)를 삭제
🔢 개수 연산 (Count)
🔢 개수 연산 방법 전체 노드 수 = 왼쪽 서브 트리 노드 수 + 오른쪽 서브 트리 노드 수 + 1(루트)
모든 노드를 순회하면서 count 변수를 증가시키는 방식으로도 구현 가능. 이진 트리의 전체 노드 개수를 세기 위해서는 모든 노드의 순회가 필요합니다.
슈도코드 (Pseudocode) — 개수 연산
count_node(x)
if x = NULL // 빈 노드 → 0 반환 then return 0; else return 1 + count_node(x.left) // 루트 1 + 왼쪽 + 오른쪽 + count_node(x.right);
C 코드 — 재귀적 노드 개수 계산 함수
int count_node(TreeNode *x) { if (x == NULL) // 빈 노드 → 0 반환 return 0; else return 1 + count_node(x->left) // 현재 노드(1) + 왼쪽 서브트리 + count_node(x->right); // + 오른쪽 서브트리 }
📖 코드 포인트 · x == NULL : 트리가 없거나 리프 노드의 자식에 도달한 경우 — 0을 반환해 합산을 종료 · return 1 + ... : 현재 노드 자신(1) + 왼쪽 서브트리 개수 + 오른쪽 서브트리 개수 · 재귀 구조 : 모든 노드를 빠짐없이 방문하는 후위 순회와 동일한 흐름으로 동작
03 BST의 3가지 순회 방법
순회(Traversal)란 트리에 속하는 모든 노드를 중복 없이 한 번씩 방문하여 데이터를 처리하는 작업입니다. 선형 자료구조(배열, 리스트 등)는 순회 방법이 하나뿐이지만, 트리는 비선형 자료구조이므로 루트와 좌·우 서브 트리를 어떤 순서로 방문하느냐에 따라 3가지 방법으로 나뉩니다.
순회 종류
방문 순서
특징
전위 순회 (Preorder)
루트 → 왼쪽 → 오른쪽
루트를 가장 먼저 방문. 트리 복사 등에 활용
중위 순회 (Inorder)
왼쪽 → 루트 → 오른쪽
정렬된 순서(오름차순)로 방문. BST에서 가장 유용한 순회
후위 순회 (Postorder)
왼쪽 → 오른쪽 → 루트
루트를 가장 마지막 방문. 폴더 용량 계산 등에 활용
✓ 중위 순회가 정렬 순서인 이유 BST의 성질상 왼쪽 < 루트 < 오른쪽이므로, 왼쪽 서브 트리를 모두 방문 → 루트 → 오른쪽 서브 트리 순으로 가면 자연스럽게 작은 값부터 큰 값 순서(사전식/오름차순)로 방문하게 됩니다.
📖 이진 트리 순회의 재귀적 특성 이진 트리는 전체 트리와 서브 트리의 구조가 동일합니다. 따라서 전체 트리 순회에 사용한 알고리즘을 서브 트리에도 그대로 적용할 수 있습니다. (재귀 구조)
04 실제 응용 사례
📚 응용 1 — 나의 단어장
이진 탐색 트리로 단어장 프로그램 구현 가능. 각 노드의 레코드 = "단어" + "의미" 두 필드로 구성.
· 입력(i) : 단어·의미 입력하여 노드 추가 · 삭제(d) : 단어 입력으로 해당 노드 제거 · 단어 탐색(w) : 단어 → 의미 출력 · 의미 탐색(m) : 의미 → 단어 출력 · 사전 출력(p) : 중위 순회로 알파벳 순 출력 · 종료(q) : 프로그램 종료
💾 응용 2 — 폴더 용량 계산
이진 탐색 트리 순회를 폴더 용량 계산에 응용. 단, 이진 트리이므로 하나의 폴더 안에 하위 폴더는 최대 2개까지만 가능.
· 서브 폴더의 용량을 모두 계산한 후 루트 폴더 계산 · 후위 순회 방식 사용 (자식 → 자식 → 부모 순으로 계산) · 하위 폴더 용량을 먼저 계산해 반환하는 구조
✓ 폴더 용량 계산에 후위 순회를 쓰는 이유 부모 폴더의 용량을 알려면 자식 폴더의 용량을 먼저 알아야 합니다. 후위 순회(왼→오→루트)는 자식을 먼저 처리하고 부모를 마지막에 처리하는 구조이므로, 하위 폴더 용량을 합산하여 상위 폴더로 반환하는 계산에 딱 맞습니다.
📌 핵심 정리
· BST 정의 : 왼쪽 서브 트리 키 < 루트 키 < 오른쪽 서브 트리 키를 만족하는 이진 트리 · 시간 복잡도 : 평균 O(log n) / 편향 트리(최악) O(n) — 균형 유지가 핵심 · 탐색 연산 : 루트에서 시작, 키 비교로 좌/우 이동, 재귀 구조로 구현 · 삽입 연산 : 탐색 실패 위치가 삽입 위치, 반드시 탐색 먼저 수행 · 삭제 연산 : 단말 노드 / 자식 1개 / 자식 2개 세 경우 구분 처리 · 중위 후속자 : 오른쪽 서브 트리의 최솟값 — Case 3 삭제 시 후계자로 사용 · 전위 순회 : 루트 → 왼쪽 → 오른쪽 · 중위 순회 : 왼쪽 → 루트 → 오른쪽 (결과: 오름차순 정렬) · 후위 순회 : 왼쪽 → 오른쪽 → 루트 (폴더 용량 계산에 활용)
태그 : 이진탐색트리란BST 자료구조이진트리 순회 종류전위순회 중위순회 후위순회 차이BST 삭제 연산이진탐색트리 탐색방법C언어 자료구조중위순회 정렬순서후계자 노드란BST 응용 사례
OpenAI의 정밀도 혁명: 환각 현상을 획기적으로 줄인 GPT-5.5 Instant가 ChatGPT의 기본 모델로 공식 탑재되었습니다. 물리적 AI의 가속: 삼성과 메타가 AI의 '몸체'를 차지하기 위해 휴머노이드 로봇 시장 진출을 공식화하며 하드웨어 경쟁이 격화되고 있습니다. 엔비디아의 공급망 선점: 엔비디아가 코닝(Corning)과 파트너십을 맺고 미국 내 광통신 생산량을 10배 늘려 AI 팩토리 인프라 독주 체제를 굳힙니다. 글로벌 AI 확산: 마이크로소프트의 보고서에 따르면 전 세계 생성형 AI 사용 인구가 17.8%를 돌파했으며, 특히 아시아권의 채택 속도가 가장 가파릅니다.
1. BTS 때문? 여행수지, 11년여 만에 흑자 → 3월 2000억원(1억 4000만달러) 흑자. 이는 중국 관광객이 급증한 2014년 11월(5300만달러) 후 처음. BTS 공연 등으로 3월 입국자가 처음으로 200만 돌파. 고환율에도 내국인의 해외 여행이 줄고 있지 않아 흑자 추세 이어질지는 미지수.(매경)
2. 우리나라 국민의 40%는 점·사주·관상을 믿는다 → 한국갤럽이 ‘관악산 열풍’ 초창기인 지난 3월 조사한 수치. 2009년보다 9%포인트나 올랐다. 한국리서치의 지난해 11월 조사때도 비슷한 수치. 특히 2030(42%)이 점·사주에 의지하는 정도가 60대, 70대 이상보다 높았다.(중앙선데이)▼
3. AI 여론 조사, 실제에 근접했다 → 유권자 2139명의 연령·지역·학력·소득·직업, 이념 성향, 지지 정당 등의 정보를 입력한 뒤 이들이 지난 대선에서 실제 투표한 결과와 AI 추측을 비교했더니 큰 차이 없어. 실제(AI추측) : 이재명 57.3%(55.4%), 김문수 33.7%(31.7%), 이준석 6.5%(5.4%),..(중앙선데이)▼
4. 주식 ‘오른다’ 빚투 36조원 vs ‘내린다’ 공매도 28조원... 사상최대 대결 → 추가 상승을 기대하고 강세장에 올라타려는 '빚투' 자금과 고점 부담에 대비해 하락에 베팅하는 공매도 자금이 역대급으로 쌓이면서 ‘상승’과 ‘하락’ 베팅이 맞서는 모습.(매경)▼
5. 미 대법원, 트럼프 관세는 ‘모두 위법’ → 지난 2월 트럼프 행정부의 ‘상호관세’를 위법으로 판결한 데 이어 그 후속 조치로 무역법 122조를 근거로 부과한 ‘글로벌 관세(10%)’도 위법판결(7일, 현지 시간) 다만 소송을 제기한 미 수입업체 2곳으로 판결 효과를 한정해 세계 각국에 당장 직접적인 영향을 주진 못할 거라는 관측...(동아)
6. 기후 변화... 봄 수박 정착 → 10년 전만해도 봄 수박은 온풍기 연료비 등으로 마진이 없는 농사였다. 그러나 지금은 다르다. 봄 수박은 완만한 기온 상승 속에서 약 100일 동안 천천히 자라기 때문에 여름 수박(30~40일)보다 조직이 치밀하고 더 달다.(동아)
7. 한자는 모두 몇자 일까? → 2천년 전 나온 최초의 본격 사전인 '설문해자'에는 9353자가 실려있다. 흔히 말하는 ‘옥편’은 일반명사가 아니라 남북조 시대에 나온 사전 이름이다. 옥편 원본에는 1만6 917자가 담겼는데 현존하지 않고, 송나라 때 만든 증보판에는 2만 261자가 실렸다. 현대 사전엔 5만자 정도가 실린다. 실존하는 총 자수는 10만자가 될 것으로 보이는데 정확히는 모른다...(매경)
8. 이팝나무 → 늦은 봄 흰 꽃을 만발하는 큰 나무다. 최근에 도심 속 가로수로 많이 이용되고 있다. 풍성한 흰색의 작은 꽃들이 ‘이팝’(쌀밥)을 닮았다고 이름이 이팝나무다.(중앙선데이)▼
전주시 팔복동 산업단지 내 이팝나무 거리
9. 캘리포니아 ‘억만장자세’ 실현될까? → 부유층은 이미 탈출 시작. 미국 서비스노조 서부의료지부가 제안한 이 세금은 순자산 10억 달러(약 1조 4700억원) 이상 부자를 대상으로 자산의 5%를 일회성 세금으로 징수하는 내용이다. 현재 주민투표 성립 요건(87만)의 거의 두배를 넘어섰다. 오는 11월 3일 중간선거와 함께 주민투표가 치러진다.(국민)
10. 남용되는 '의' → 일상 언어에서는 ‘내 책’이라고 하지만 문자 언어에서는 흔히 ‘나의 책’이라고 한다. ‘나의 꿈’, ‘나의 계획’, ‘나의 판단’... 예는 많다. ‘만남 광장’으로 해도 될 것을 ‘만남의 광장’이 되어 있다.(연합뉴스 이런말 저런글)
📖 왜 JK 플립플롭이 필요한가? SR 플립플롭은 S=1, R=1 입력이 동시에 들어올 때 출력이 불안정(undefined)해지는 치명적 단점이 있다. JK 플립플롭은 이 금지 입력 조합을 toggle(반전) 동작으로 정의해 문제를 완전히 해결했다. 플립플롭 중 가장 널리 사용되는 이유가 여기에 있다.
🔁 JK 플립플롭 입출력 대응 관계
JK 플립플롭의 J는 SR의 S(set)에, K는 R(reset)에 각각 대응한다. 클록펄스(CP=1)가 인가되었을 때의 동작은 다음과 같다.
· CP가 High(1)인 동안 J, K 입력을 계속 감지 · 클록이 High인 전체 구간에서 출력 변화 가능 · 레이스(race) 문제 발생 위험 → 클록이 1인 동안 toggle이 계속 반복될 수 있음
에지 트리거 (Edge-triggered)
· 상승에지(↑) 또는 하강에지(↓) 순간에만 동작 · 논리기호에서 CP 입력에 '▷' 표시로 구분 · 레이스 문제 없이 안정적 동작 → 74112: Dual 하강에지 트리거 JK FF
✓ 74112 IC — 비동기 입력 동작 PR과 CLR은 active low 신호 (0일 때 동작). · PR = 0 → J, K, CP 상태에 관계없이 Q = 1 (강제 Set) · CLR = 0 → J, K, CP 상태에 관계없이 Q = 0 (강제 Reset) · PR = CLR = 1 → 정상 클록 동작
02 T 플립플롭 — Toggle 전용 설계
📖 T 플립플롭 개념 JK 플립플롭의 J 입력과 K 입력을 하나로 묶어 단일 입력 T로 구동하는 플립플롭. JK FF에서 J=K=0 (불변) 또는 J=K=1 (toggle) 두 경우만 사용하도록 특화한 회로다.
· T = 0 → JK FF의 J=0, K=0과 동일 → 출력 불변(Hold) · T = 1 → JK FF의 J=1, K=1과 동일 → 출력 toggle(반전)
⚠️ 시험 함정 — 출력 주파수 T 플립플롭(T=1 고정)에서 출력 주파수 = 입력 클록 주파수 × 1/2. "출력 주파수 = 입력 주파수와 동일하다"는 표현은 틀린 설명이다. 클록이 들어올 때마다 출력이 반전되므로, 클록 2주기에 출력 1주기가 완성된다.
· T FF 2개를 직렬 연결 → 클록을 1/4로 분주 (4분주 회로) · 이 원리로 계수(Counter) 회로의 핵심 소자로 사용
🔧 T 플립플롭 구성 방법
D 플립플롭으로 구성
· D 입력에 Q(이전 출력의 보수)를 연결 · CP 입력에 Toggle 신호 T를 연결 · 클록이 들어올 때마다 D=Q가 입력 → 자동 반전
JK 플립플롭으로 구성
· J와 K 입력을 +5V(논리 1)로 고정 연결 · CP(클록) 입력에 T 신호를 인가 · J=K=1 상태에서 클록마다 toggle 동작
03 비동기 입력 — PR · CLR
📖 비동기 입력(Asynchronous Input)이란? 대부분의 플립플롭은 클록펄스(CP)에 의해 상태가 바뀌는 동기 입력이 있고, 클록과 무관하게 즉시 출력을 바꿀 수 있는 비동기 입력도 함께 갖추고 있다.
· PR (Preset, active low) : 0을 인가하면 즉시 Q = 1 · CLR (Clear, active low) : 0을 인가하면 즉시 Q = 0 · 주요 용도 : 회로 동작 전 초기값 설정, 시스템 리셋
PR
CLR
CP
J
K
Q
설명
0
1
×
×
×
1
Preset 동작 — 즉시 Q=1 (클록 무관)
1
0
×
×
×
0
Clear 동작 — 즉시 Q=0 (클록 무관)
1
1
↓
J
K
정상
클록 에지에 따른 정상 JK 동작
04 플립플롭 동작 특성 파라미터
플립플롭이 실제 회로에서 올바르게 동작하려면 입력 신호의 타이밍이 정확해야 한다. 아래 파라미터들은 데이터시트에서 반드시 확인해야 하는 필수 수치들이다.
파라미터
기호
정의 및 설명
전파지연시간 (Propagation Delay)
tPLH, tPHL
입력 신호 인가 후 출력에 변화가 발생하기까지의 시간 간격 tPLH: Low→High 지연 / tPHL: High→Low 지연 / 기준점 50%
설정 시간 (Set-up Time)
tS
CP 유효 에지(상승/하강) 도달 전에 입력(J, K, D 등)이 안정된 값을 유지해야 하는 최소 시간 이 시간 이전에 입력이 바뀌면 FF가 오동작할 수 있음
보류 시간 (Hold Time)
tH
CP 유효 에지 도달 후에도 입력값이 변해서는 안 되는 최소 시간 에지 직후 입력이 바뀌면 래치업(latch-up) 등 오동작 발생
펄스 폭 (Pulse Width)
tW
클록 또는 preset/clear 입력 펄스가 정확하게 인식되기 위해 유지되어야 하는 최소 시간 폭
최대 클록 주파수 (Max. Clock Frequency)
fmax
플립플롭이 안전하게 동작할 수 있는 최대 클록 주파수. 항상 fmax 이하에서 동작시켜야 함 주기 = 1/fmax = tW(H) + tW(L)
전력 소모 (Power Dissipation)
P
P = VCC × ICC DC 공급전압 × 평균 공급전류
⚠️ 설정 시간 · 보류 시간 위반 시 발생하는 일 두 조건 중 하나라도 위반되면 플립플롭 출력이 0도 1도 아닌 메타스테이블(metastable) 상태에 빠질 수 있다. 이 상태는 예측 불가능한 출력을 만들어 디지털 시스템 전체를 오동작시키기 때문에 실제 설계에서 반드시 준수해야 한다.
05 멀티바이브레이터 3종
📖 멀티바이브레이터(Multivibrator)란? 기본적으로 두 개의 인버터가 서로의 출력을 입력으로 받아 피드백(feedback)을 구성하는 회로. 한쪽 출력이 0이면 반드시 다른 쪽은 1이 되어 동시에 같은 상태에 있을 수 없다. 디지털 시스템에서 2진수 저장, 펄스 계수, 연산 동기화 등 핵심 기능을 수행한다.
📋 멀티바이브레이터 3종 비교
종류
안정 상태 수
외부 트리거
특징 및 용도
무안정 (Astable) 구형파 발진기
0개 (불안정 2개)
불필요 (자력 발진)
외부 입력 없이 High·Low 두 불안정 상태 사이를 자동 반복. 주기적 구형파 발생 → 클록 생성, 타이머 555, 수정발진기에 활용
단안정 (Monostable) one-shot
1개 (+준안정 1개)
필요 (트리거 신호)
트리거 신호 입력 시 일정 폭의 구형 펄스 1개를 출력하고 안정 상태로 복귀. 펄스 폭 연장·정형(74121, 555) 등에 활용
쌍안정 (Bistable) = 플립플롭
2개
필요 (클록·J·K 등)
0과 1의 두 안정 상태를 가짐. 플립플롭과 동일. 데이터 기억·래치 등에 사용
❌ 용어 주의 — '준안정'과 '불안정'을 혼동하지 말 것 · 무안정(Astable) : 안정 상태가 0개. 두 불안정(unstable) 상태를 자동으로 오가는 발진 동작 · 단안정(Monostable) : 안정 상태 1개 + 준안정(quasi-stable) 상태 1개. 트리거가 오면 준안정 상태로 갔다가 일정 시간 후 자동으로 안정 상태로 복귀
따라서 "외부 트리거 없이 준안정 상태에서 다른 준안정 상태로 변화를 되풀이하는 것"은 정확한 표현이 아니며, 올바른 답은 '무안정(비안정) 멀티바이브레이터'이고 두 불안정 상태를 오간다고 이해하는 것이 정확하다.
🔔 무안정 멀티바이브레이터 구현 방법
① NOT 게이트 RC 회로
NOT 게이트 3개 + RC 소자 발진 주파수: f = 0.455 / RC
→
② 슈미트 트리거 (7414)
히스테리시스 특성으로 잡음에 강한 구형파 생성 74LS14 IC 활용
→
③ 타이머 555 / 수정발진기
555: R·C로 주파수 조정 수정발진기: 정밀 주파수(PPM급)
📌 핵심 정리
· JK 플립플롭 : J=K=1 → toggle, 특성방정식 Q(t+1) = J·Q(t) + K·Q(t), 가장 범용적 · 에지 트리거 : 상승(↑) 또는 하강(↓) 에지 순간에만 동작, 레이스 문제 없음 · T 플립플롭 : JK의 J·K를 묶은 것, T=1이면 toggle. 출력 주파수 = 입력의 1/2 (분주) · 비동기 입력 : PR=0이면 Q=1, CLR=0이면 Q=0, 클록과 무관하게 즉시 동작 · 설정·보류 시간 : 위반 시 메타스테이블 상태 → 실제 설계에서 반드시 준수 · 무안정 : 안정 0개, 자력 발진 (발진기·타이머) / 단안정 : 안정 1개, 트리거 시 일정 폭 펄스 · 쌍안정 : 안정 2개 = 플립플롭. 플립플롭은 쌍안정 멀티바이브레이터와 동일하다