C++ 공부빵야

연산자

당근먹는하니 2021. 12. 10. 12:40
728x90
반응형

12/10

 

비트 단위 연산자 : 비트 단위 별로 진행하는 연산자

 

&(and) | (or) ~(not) ^(xor) 연산자

 

        00001010(2)

&      00001101  

        00001000 -> 8

같은 자리 있는 애들끼리 연산하는 것

 

         00001010(2)

or      00001101  

        00001111 -> 15 

 

10 -> 00001010(2)

 

 

not - 00001010 -> 11110101

 not연산자는 한 데이터만 갖고 연산함

 

xor 비교하는 두 비트의 값이 같으면 flase를 다르면 true

 

        00001010(2)

&      00001101  

        00000110 

키보드 입력키, 두 개 동시에 눌렸는지 어떻게 판단? 

위쪽 -> 0001 아래 -> 0010 오른쪽 -> 0100 왼쪽 -> 1000 으로 약속 해놓고,

0001

0100

------

0101 (xor연산) -> 조합키(우+상)

 

역으로 0101이 무슨 키와 무슨 키 누른건지 확인하고 싶으면 : 

0101 가지고 하나씩 &연산해본다. 

0001이면 누른 것, 0000이면 안 누른 것

 

#include <bitset>

 

int iTemp = 10;

int iSour = 13; 

 

//bitset<몇 비트>(출력할 대상)

cout << bitset<8>(iTemp) << endl;

=> 00001010 으로 나옴 

 

cout << bitset<8>(iTemp&iSour) << endl;

cout << (iTemp&iSour) << endl;

=> 000001010, 8 나옴 (???????????????????????????????????)

 

cout << bitset<8>(~iTemp) << endl;

cout << (iTemp) << endl;

=> 1111어쩌구, -11 

 

4라는 값을 10의 보수로 보면 6 (10이 되려면 6이 필요)

컴퓨터는 음수를 표현할 수단이 없음 (0,1 바라기)

비트 단위 별로 0을 만들어서 음수를 표현 

 

2 : 10

1 : 01 (1의 보수)

 

10

10

----

1[00] 2비트 넘는 1 탈락 

 

11111111

00000001

---------- +

1[00000000] 8비트 넘는 1 탈락 

 

728x90
반응형