Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 3D #Reconstruction #computer #vision #volume #metric #tsdf #kinect #fusion
- backtracking #codetree #디버깅 #삼성코테
- c++ #boj #
- 백준
- BOJ
- 30870
- 레드아보
- 쌤쌤쌤
- N번째큰수
- 백준 #다익스트라 #dijkstra #9370 #c++
- 3343
- LIS #가장긴증가하는부분수열 #
- 16202
- boj #백준
- C++
- graph #최단경로
- 코딩
- 22869
- c++ #입출력 #속도 #ios #sync_with_stdio #cin #cout #tie
- 사이클 없는 그래프
- graph
- 호반우 상인
- 투포인터 #백준 #boj #20922 #22862
- 20117
- 줄어드는수
- hcpc
- 이분탐색 #dp #11053
- 1174
- 최소 #공배수 #최대 #공약수 #유클리드 #호제법 #lcm #gcd #c++ #boj #3343 #백준 #장미
- 진법변환 #2to10 #10to2 #이진법 #십진법 #변환 #bitset #c++
Archives
- Today
- Total
hyunjin
[C++][비트 단위 논리 연산] 1059~ 보수 , ~, & ,| ,^, << ,>> 본문
728x90
[1059] 비트단위 연산자로 NOT하여 출력
#include <bits/stdc++.h>
using namespace std;
int main(){
int a;
scanf("%d",&a);
cout<< ( ~a);
return 0;
}
2에 비트 연산자인 ~(틸다)를 사용하면 -3이 된다.
※주의!!! !는 참 거짓을 나타내는 논리 연산자
<2의 보수 표현>
-n = ~n +1
n = ~(-n-1)
10진수 | 2진수 | 10진수 | 2진수 |
1 | 0001 | -1 | 1111 |
-2 | 1110 |
4bit에서 -8 ~ 7까지 표현 가능
[1060] &
#include <bits/stdc++.h>
using namespace std;
int main(){
int a,b;
scanf("%d %d",&a,&b);
cout<< (a & b);
return 0;
}
10진으로 출력된다.
10진 <-> 2진 출력 바로 되는 함수는 없을까? 찾아보니 있다.
C++카테고리에 정리해놔야겠다.
숫자간 비트 단위로 & 연산하는 것은 ip 주소 연산하는 것에도 쓰인다.
실제로 네트워크에 연결되어 있는 두 개의 컴퓨터가 데이터 주고 받기 위해
같은 네트워크에 있는지 아닌지 판단하는데 사용된다고 한다.
=>비트 연산을 이용하면 어떤 비트열의 특정 부분만 모두 0으로 만들 수 있기 때문
192.168.0.31 : 11000000.10101000.00000000.00011111
255.255.255.0 : 11111111.11111111.11111111.00000000
& 연산하면 특정 부분만 모두 0으로 바꿀 수 있다.
비트 단위 연산은 빠른 계산이 필요한 그래픽 처리에서 마스크 연산 수행하는데 효과적
[1061] |
#include <bits/stdc++.h>
using namespace std;
int main(){
int a,b;
scanf("%d %d",&a,&b);
cout<< (a | b);
return 0;
}
[1062] 비트단위 XOR : ^
#include <bits/stdc++.h>
using namespace std;
int main(){
int a,b;
scanf("%d %d",&a,&b);
cout<< (a ^ b);
return 0;
}
XOR (배타적 논리합): 서로 다를 때 1
^를 다른 연산자들의 조합으로 나타내보자.
a^b = ~(a&b) & (a|b)
cout<< ~(a&b) & (a|b) ;
근데 왜 에러가 날까 ????
728x90
'알고리즘 연습 > 코드업' 카테고리의 다른 글
[C++][조건/선택 실행 구조]1068 (0) | 2020.09.04 |
---|---|
[C++][삼항연산자]1064 (0) | 2020.09.04 |
[C++][비교,논리 연산] (0) | 2020.09.04 |
[C++][기초- 비트 시프트 연산자] (0) | 2020.09.03 |
[C++][기초-출력변환] 8진,16진 (0) | 2020.09.02 |