CPP_RO_쉬프트 연산과 논리연산

CJB_ny·2022년 7월 1일
0

C++ 정리

목록 보기
8/95
post-thumbnail

계산기 사용법

32에서

left shift 상태에서

64나온다

왜냐 왼쪽으로 비트 옮기면 2^1 만큼 증가함.

쉬프트연산 정리

PRINT_HEX '4' 는 4바이트 출력한다는거임

2로 놔두면 5678 출력되는데 이유가 16진수 두자리는 1바이트 이고,

저번시간에 배운

Littile-Endian


https://velog.io/@starkshn/CPPRO%EB%AC%B8%EC%9E%90%EC%99%80-%EB%A0%88%EB%94%94%EC%95%88-0g5qcxw0#%EB%8F%99%EC%9D%BC%ED%95%9C-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%9D%BC-%EB%9D%BC%EB%8D%94%EB%9D%BC%EB%8F%84-%EC%96%B4%EB%96%BB%EA%B2%8C-%ED%95%B4%EC%84%9D%ED%95%98%EB%8A%90%EB%83%90-


에 따라 뒤의

애내들이

(비트로 볼경우)

거꾸로 저장되기 때문에

뒤에서 부터 출력이 된다.

어쨋든 0x12345678을 출력하면 12345678 이 나오는데

왼쪽으로 8번 밀었다가 다시 8번 오른쪽으로 밀면

34567800 나오는데 확인 해보면

현재 이숫자를

shl 8 해주면

이렇게 밀림 (소실)

다시 shr 8 해주면

이렇게되서 출력문이 맞다.

논리연산

xor

A xor B => 둘다 다르다면 1이고

둘다 1이거나 0이면 => 0

이거는 그냥 한번 보면된다.

응용 사례 bitflag

날아다닌다 1

과 비트 논리연산 and를 통해 1이 나오면 날아다니는 것임.

xor 응용

자기 자신으로 돌아옴

xor 2번 -> 자기 자신으로 돌아옴 -> 암호학에서 많이 사용 bl을 key값으로

xor al, al == mov al, 0

xor == 둘다 1이면 0 || 둘다 0이면 0 이고 둘다 다르면 1인데

al al 은 둘다 똑같은 값이라 무조건 0나온다.

(retrun 0과같다)

profile
https://cjbworld.tistory.com/ <- 이사중

0개의 댓글