2016년 12월 26일 월요일

Day3

비트 논리 연산자
어째선지 교사가 이부분은 매우 빠르게 언급만 하고 지나갔습니다. 추측컨데 잘 쓰지 않는 기능이나, 알긴 알아야 하는 기능인거 같습니다.
기능을 들어는 봤다 와 전혀 모르는건 엄청난 치이가 맞더군요.
비트 : 2진수 표기법
입니다! 간단하죠? 비트논리연산자, 그러니깐 2진수를 이용한 논리 연산자입니다!

~ NOT, 10, 01이 되는 기적!
& 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가 나오는군요!
72진수화를 시킬 경우
0111 이 나오네요!
32진수 화 시키면
0011 !
142진수화 시키면
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 로 깨끗하게 보여질것 입니다! 

댓글 없음:

댓글 쓰기