geminanolja 님의 블로그

고정 헤더 영역

글 제목

메뉴 레이어

geminanolja 님의 블로그

메뉴 리스트

  • 홈
  • 태그
  • 방명록
  • 분류 전체보기 (99)
    • 자료구조&알고리즘 (44)
      • C++ (43)
      • Python (1)
    • Unreal Engine (6)
    • cote (37)
      • Challenge (7)
      • Intermediate (29)
    • C++ Basic (2)

검색 레이어

geminanolja 님의 블로그

검색 영역

컨텐츠 검색

자료구조&알고리즘/C++

  • 🔍 비트 연산 정리

    2025.03.06 by geminanolja

  • 🔍 최하위 켜져 있는 비트 찾기 (S & -S)

    2025.03.06 by geminanolja

  • 🔍 최하위 켜져 있는 비트 찾기 (S & -S)

    2025.03.06 by geminanolja

  • 🔍 비트마스크 : &= ~(1 << ind)와 ^= (1 << ind) 연산

    2025.03.06 by geminanolja

  • 2의 보수 (Two's Complement)

    2025.03.05 by geminanolja

  • 비트 연산자 ^ (XOR), << (왼쪽 시프트), >> (오른쪽 시프트)

    2025.03.05 by geminanolja

  • 🔍 ~ (비트 NOT) vs ^ (비트 XOR) 연산 차이점

    2025.03.05 by geminanolja

  • 비트 마스킹 : 비트 연산자

    2025.03.05 by geminanolja

🔍 비트 연산 정리

🔍 XOR 연산(^)의 진짜 동작 방식내가 작성한 XOR 연산 표에 오류가 있었다는 걸 확인했어.지금부터 올바른 XOR 연산의 원리와 예제를 다시 정리해 줄게! ✅ 4️⃣ 최종 정리연산 수식 설명 예제 (S = 0b1010, 10) 결과 (S 변경 후)ind번째 비트 끄기 (0 만들기)S &= ~(1 ind 번째 비트를 0으로 설정ind = 1; S &= ~(1 S = 0b1000 (8)ind번째 비트 XOR (토글)S ^= (1 ind 번째 비트를 반전 (1 ↔ 0)ind = 2; S ^= (1 S = 0b1110 (14)최하위 켜져 있는 비트 찾기idx = (S & -S)최하위 1의 값(2^n)을 찾음S = 10 (0b1010); idx = S & -S;idx = 0b0010 (2)크기가 n인 집합..

자료구조&알고리즘/C++ 2025. 3. 6. 20:07

🔍 최하위 켜져 있는 비트 찾기 (S & -S)

최하위에서 가장 먼저 등장하는 1을 찾는 비트 연산자idx = (S & -S);🚀 이 연산은 S에서 가장 오른쪽에 위치한 1을 제외한 나머지를 모두 0으로 만든다.✅ 1️⃣ S & -S 연산 과정📌 핵심 원리-S는 S의 2의 보수(Two's Complement)를 취한 값이다.2의 보수란 1의 보수(비트 반전) + 1 을 수행한 값.S & -S 연산을 하면 최하위 1만 남고 나머지는 0이 된다.✅ 2️⃣ 예제 분석예제 1: S = 12 (0b1100)int S = 12; // 0b1100int idx = S & -S;cout ✔️ 1단계: S의 2의 보수(-S) 계산 S = 0b1100 (12)~S = 0b0011 (1의 보수)+1 = 0b0100 (2의 보수) -> -S✔️..

자료구조&알고리즘/C++ 2025. 3. 6. 20:06

🔍 최하위 켜져 있는 비트 찾기 (S & -S)

최하위에서 가장 먼저 등장하는 1을 찾는 비트 연산자idx = (S & -S);🚀 이 연산은 S에서 가장 오른쪽에 위치한 1을 제외한 나머지를 모두 0으로 만든다.✅ 1️⃣ S & -S 연산 과정📌 핵심 원리-S는 S의 2의 보수(Two's Complement)를 취한 값이다.2의 보수란 1의 보수(비트 반전) + 1 을 수행한 값.S & -S 연산을 하면 최하위 1만 남고 나머지는 0이 된다.✅ 2️⃣ 예제 분석예제 1: S = 12 (0b1100)int S = 12; // 0b1100int idx = S & -S;cout ✔️ 1단계: S의 2의 보수(-S) 계산 S = 0b1100 (12)~S = 0b0011 (1의 보수)+1 = 0b0100 (2의 보수) -> -S✔️..

자료구조&알고리즘/C++ 2025. 3. 6. 19:46

🔍 비트마스크 : &= ~(1 << ind)와 ^= (1 << ind) 연산

✅ 1️⃣ 코드 전체 분석#includeusing namespace std;int main(){ int s = 15; // 0b1111 (10진수 15) int a = 15; // 0b1111 (10진수 15) cout ✅ 2️⃣ 실행 예상 결과s : 15s : 11a : 13✅ 3️⃣ s &= ~(1 s &= ~(1 s = 15 → 0b1111 (10진수 15)ind = 2이므로 1 1 ~(1 ~(0b0100) = 0b1011 (십진수 -5)s &= ~(1 0b1111 (15)& 0b1011 (-5)---------- 0b1011 (11)결과: s = 11 (0b1011)✅ 즉, 2번째 비트(0b0100)를 0으로!✅ 4️⃣ a ^= (1 a ^= (1 a = 15 → 0b..

자료구조&알고리즘/C++ 2025. 3. 6. 19:33

2의 보수 (Two's Complement)

🚀 음수를 표현하는 방법: 2의 보수 (Two's Complement)컴퓨터는 이진수(0과 1)만 사용하기 때문에 음수를 직접 표현할 수 없어!그래서 2의 보수(Two's Complement) 라는 방식을 사용해 음수를 표현해.✅ 1️⃣ 왜 2의 보수를 사용할까?컴퓨터는 덧셈과 뺄셈을 같은 방식으로 처리해야 연산이 빠름.2의 보수를 사용하면 뺄셈을 덧셈으로 바꿔서 쉽게 처리할 수 있음.양수와 음수를 같은 규칙으로 표현할 수 있음.✅ 2️⃣ 2의 보수 만드는 방법1. 비트 반전 (1 → 0, 0 → 1) 2. +1을 더함📌 예제: 5를 -5로 바꿔보자!5를 이진수(8비트)로 표현00000101 (5)비트 반전 (1 → 0, 0 → 1)11111010 (반전)+1을 더함11111011 (-5)✅ 즉..

자료구조&알고리즘/C++ 2025. 3. 5. 21:57

비트 연산자 ^ (XOR), << (왼쪽 시프트), >> (오른쪽 시프트)

✅ 1️⃣ XOR (^) 연산자란?"같으면 0, 다르면 1"두 비트가 같으면 0, 다르면 1을 반환해!📌 XOR 연산자 표A B A ^ B000011101110📌 XOR 예제 (1001 ^ 1000) 1001 (9)^ 1000 (8)------------ 0001 (1)✅ 즉, 9 ^ 8 = 1🎓 XOR 쉽게 이해하기! "같은 걸 싫어하는 연산!"같은 숫자끼리 XOR 하면 0 (ex: 1 ^ 1 = 0, 0 ^ 0 = 0)다른 숫자끼리 XOR 하면 1 (ex: 1 ^ 0 = 1, 0 ^ 1 = 1)✅ 2️⃣ 왼쪽 시프트 (비트를 왼쪽으로 n번 밀면 2^n을 곱한 것과 같다!a a × (2^b) 와 같다.📌 예제int a = 3; // 3 = 0b0011int b = a 📌 비트 계산 ..

자료구조&알고리즘/C++ 2025. 3. 5. 21:49

🔍 ~ (비트 NOT) vs ^ (비트 XOR) 연산 차이점

🔍 ~ (비트 NOT) vs ^ (비트 XOR) 연산 차이점~(비트 NOT)과 ^(비트 XOR)는 비트 마스킹에서 매우 중요한 연산자✅ 1️⃣ ~ (비트 NOT 연산자)S = ~S;📌 동작 방식비트 반전(Complement, 보수 연산) 을 수행즉, 1을 0으로, 0을 1로 뒤집음.단항 연산자로 한 개의 숫자에 대해서만 동작📌 예제int S = 0b00001111; // 15 (0x0F)S = ~S;✔️ 결과S = 0b11110000 // -16 (2의 보수 표현)🚨 C++에서는 ~S를 수행하면 음수 값(2의 보수 형태)이 나올 수 있으므로 주의!예를 들어 ~0b00001111 = 0b11110000이 되는데, 이는 signed int로 해석하면 -16✅ 2️⃣ ^ (비트 XOR 연산자)S =..

자료구조&알고리즘/C++ 2025. 3. 5. 21:41

비트 마스킹 : 비트 연산자

✅ 1️⃣ 비트 AND (&) 연산자 표둘 다 1일 때만 1, 나머지는 0 A & B000010100111✅ 2️⃣ 비트 OR (|) 연산자 표하나라도 1이면 1이 된다!A | B000011101111✅ 3️⃣ 비트 연산 예제📌 비트 AND (&) 연산 1001 (9)& 1000 (8)------------ 1000 (8)➡ 9 & 8 = 8📌 비트 OR (|) 연산 1001 (9)| 1000 (8)------------ 1001 (9)➡ 9 | 8 = 9 ✅ 1️⃣ 비트 AND (&) 연산자두 비트가 모두 1일 때만 결과가 1이 됨!하나라도 0이면 결과는 0이야.📌 비트 AND 예제#include using namespace std;int main() { int a = 5;..

자료구조&알고리즘/C++ 2025. 3. 5. 21:30

추가 정보

인기글

최신글

페이징

이전
1 2 3 4 ··· 6
다음
TISTORY
geminanolja 님의 블로그 © Magazine Lab
페이스북 트위터 인스타그램 유투브 메일

티스토리툴바