비트 논리 연산자
어째선지 교사가
이부분은 매우 빠르게 언급만 하고 지나갔습니다.
추측컨데 잘 쓰지 않는 기능이나,
알긴 알아야 하는 기능인거 같습니다.
기능을 들어는
봤다 와 전혀 모르는건 엄청난 치이가 맞더군요.
비트 :
2진수 표기법
입니다!
간단하죠?
비트논리연산자,
그러니깐 2진수를
이용한 논리 연산자입니다!
~ | NOT, 1은 0, 0은 1이 되는 기적! |
& | AND 비교를 위한 두개의 비트가 1일때만 1이 출력 |
! | OR 두 비트중 하나만 1이어도 1 출력 |
^ | XOR 두개의 비트가 전혀 다를경우 1 |
10진수
논리 연산자랑 거업나 비슷합니다!
10진수에서
&&
가 비트에선 &
!! 키야 차암 쉽죠잉?
못보던 녀석을
주목하겠습니다.
XOR
입니다.
해석하자면 Exclusive
OR 독특한 OR
입니다!
두 수를 비고해서
같지 않으면 1이
나오는 엉뚱한 친구입니다.
NOT
AND OR 로 조합할 순 있겠지만,
쉽게하라고 지정해 줬으니 쓰는게
인지상정!
이건 예제 실습도
뛰어넘었네요.
덕분에 저도 더 이상 모르는;;
디음은
비트 시프트
연산자
이건 조금 자세히 다뤘기 때문에 서술을 해야할거
같습니다.
예를 들어 7이
있습니다.
이 숫자를 반으로 나눕니다.
3.5가 나오지만,
답답한 컴퓨터님 께서는,
특별히 지정해 주지 않는 이상 쿨하게
소숫점을 씹어먹습니다.
=> 3이 됩니다1
반대로 7을
곱해 봅니다.
=> 14가 나오는군요!
7의
2진수화를
시킬 경우
0111
이 나오네요!
3을
2진수
화 시키면
0011
!
14를
2진수화
시키면
1110
이 됩니다!
14(10진수)
|
7
|
3
|
1110(2진수)
|
0111
|
0011
|
느끼실 수도 못느끼 실수도 있겠지만,
2진수의 자릿수를 땡겼습니다.
7의
배수로 갈때는 <←
왼쪽 방향으로 7을
나눌경우엔 →>
방향으로 말이죠!
잘 모를수도 있으니 조금 더 높은 값을 이용해 봅니다.
250 ← | 50 ← | ← 25 → | 12 → | 6 → |
0110 0100 | 0011 0010 | 0001 1001 | 0000 1100 | 0000 0110 |
이제 패턴이 조금 보입니다.
왼쪽으로 2진수를
한 칸 밀때마다 2배가
되며,
오른쪽으로 한칸 밀 때 마다 ½
배가 됩니다!
이게 바로 비트 시프트!
컴퓨터 용어로는 <<
와 >>
입니다.
연산자 | 의미 |
<< | 왼쪽 시프트 연산자, a << b 일 경우 a값을 b 횟수만큼 배수 곱한다는 의미입니다. |
>> | 오른쪽 시프트 연산자, a >> b 일 경우 a값을 b 횟수만큼 나눠줍니다 |
배수만큼 값이 나눠지거나 증가할때 이 연산자를
응용하면 엄청 작업이 수월해 지더군요!
캐스트 연산자
캐스팅
하는거죠~
마법의
주문을 외워주는겁니다!
어따다?
다른
데이터 타입끼리 계산할때!
예를들어
평균을 구하기 위해서는 우리는 실수부분도 나와야
되겠죠?
하지만
점수는 보통 정수로만 나오고요,
이런경우에
캐스팅을 하는데 5번
라인에서
(float)
라고
적어져 있습니다.
이게
캐스팅을 한다는 뜻 입니다.
Int 형의 a 와 b를
float로
인식시켜서 계산하는거죠!
이렇게
케스팅 없이 두가지 다른 데이터 타입을 연산할 경우,
오류
혹은 미친값이 나옵니다!
답은 아마 41.5555555 와 비슷하게 나올것 입니다.
소숫점이 굉장히 나오네요! 이런 지저분한것들이 싫다면 6번 라인에서 %f 사이에 숫자들을 몇개 넣으면 되요!
%2.2f 처럼 말이죠!
앞의 숫자는 정수형 부분은 최대 몇자가 나올지, 뒤의 숫자는 소숫점은 몇자까지 나올지 정하는 방법이랍니다~
이렇게 값을 바꾸어 나타내면 결과는 41.55 로 깨끗하게 보여질것 입니다!
답은 아마 41.5555555 와 비슷하게 나올것 입니다.
소숫점이 굉장히 나오네요! 이런 지저분한것들이 싫다면 6번 라인에서 %f 사이에 숫자들을 몇개 넣으면 되요!
%2.2f 처럼 말이죠!
앞의 숫자는 정수형 부분은 최대 몇자가 나올지, 뒤의 숫자는 소숫점은 몇자까지 나올지 정하는 방법이랍니다~
이렇게 값을 바꾸어 나타내면 결과는 41.55 로 깨끗하게 보여질것 입니다!
댓글 없음:
댓글 쓰기