4.0 개요 p.116 수식 (expression) 연산자 (operator) 와피연산자 (operand) 로구성 수식은평가 (evaluate) 되어최종적으로 1 개의결과값이됨 피연산자 : 상수, 변수, 또다른수식 sum - 10 (a+b) / 2 연산자 2

Similar documents
1.1.1 컴퓨터의 구성 p.19

OCW_C언어 기초

Microsoft PowerPoint - chap04-연산자.pptx

Microsoft PowerPoint - chap-05.pptx

프로그래밍개론및실습 2015 년 2 학기프로그래밍개론및실습과목으로본내용은강의교재인생능출판사, 두근두근 C 언어수업, 천인국지음을발췌수정하였음

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

쉽게 풀어쓴 C 프로그래밍

untitled

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - Chapter_02.pptx

Microsoft PowerPoint - Chapter_04.pptx

<4D F736F F F696E74202D20C1A635C0E520BCF6BDC4B0FABFACBBEAC0DA>

06 세상을 변화시키는 연산자

Microsoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]

중간고사

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - c2.ppt

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

untitled

Microsoft PowerPoint - [2009] 02.pptx

Microsoft PowerPoint - chap03-변수와데이터형.pptx

PowerPoint 프레젠테이션

C 언어의구성요소인상수, 변수, 입 출력함수에 대하여학습

<4D F736F F F696E74202D20C1A633C0E52043C7C1B7CEB1D7B7A5B1B8BCBABFE4BCD2>

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - chap-06.pptx

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

쉽게 풀어쓴 C 프로그래밍

KNK_C03_Expr_kor

Microsoft PowerPoint - chap06-1Array.ppt

프로그램의실행화면 주석 (comment) 두수의합 : 300 /* 두개의숫자의합을계산하는프로그램 */ 주석은코드를설명하는글입니다. 주석 3 가지방법의주석 주석의예 /* 한줄로된주석 */ /* 저자 : 홍길동날짜 : 2013.

Microsoft PowerPoint - 2주차-1차시 (강의자료) ch01 - C Programming 기초 (part 2)

Microsoft PowerPoint - chap-03.pptx

윤성우의 열혈 TCP/IP 소켓 프로그래밊

11장 포인터

Microsoft PowerPoint - KNK_C03_Expr_kor

쉽게 풀어쓴 C 프로그래밍

03 상수, 변수, 자료형

Microsoft PowerPoint - 제11장 포인터

Microsoft PowerPoint - Lesson2.pptx

Microsoft PowerPoint - 2장 변수와 자료형 pptx

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

쉽게 풀어쓴 C 프로그래밍

금오공대 컴퓨터공학전공 강의자료

Microsoft PowerPoint - C++ 5 .pptx

untitled

JAVA PROGRAMMING 실습 02. 표준 입출력

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap05-제어문.pptx

Microsoft PowerPoint - 제11장 포인터(강의)

PowerPoint 프레젠테이션

ABC 3장

PowerPoint 프레젠테이션

C 프로그래밊 개요

제 11 장포인터 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

Microsoft PowerPoint - chap-11.pptx

Microsoft PowerPoint - Chapter_08.pptx

C 언어 프로그래밊 과제 풀이

3. 1 포인터란 3. 2 포인터변수의선언과사용 3. 3 다차원포인터변수의선언과사용 3. 4 주소의가감산 3. 5 함수포인터

<4D F736F F F696E74202D2032C1D6C2F72D32C2F7BDC32028B0ADC0C7C0DAB7E D20BAAFBCF6BFCD20BFACBBEAC0DA>

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

PowerPoint Presentation

1.4.3 증감연산자 후치증가 a++: 프로그램의한명령줄이끝나고 1을증가시킨값을다시 a에저장. 후치감소 a--: 프로그램의한명령줄이끝나고 1을감소시킨값을다시 a에저장. 전치증가 ++a: 1을증가시킨값을미리 a에저장하고프로그램을수행. 전치감소 --a: 1을감소시킨값을미리

ABC 3장

프로그래밍 및 연습 1

Microsoft PowerPoint - chap11-포인터의활용.pptx


PowerPoint Presentation

Microsoft PowerPoint - lec3.ppt

Microsoft PowerPoint - chap03.ppt

슬라이드 1

OCW_C언어 기초

본 강의에 들어가기 전

금오공대 컴퓨터공학전공 강의자료

PowerPoint 프레젠테이션

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

Microsoft PowerPoint - Perpect C 02.ppt [호환 모드]

제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap-04.pptx

Chapter_06

Data Structure

1.2 자료형 (data type) 프로그램에서다루는값의형태로변수나함수를정의할때주로사용하며, 컴퓨터는선언된 자료형만큼의메모리를확보하여프로그래머에게제공한다 정수 (integer) 1) int(4 bytes) 연산범위 : (-2 31 ) ~ (2 31 /2)-


KNK_C_05_Pointers_Arrays_structures_summary_v02

쉽게 풀어쓴 C 프로그래밍

구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을

C++ Programming

ch15

Microsoft PowerPoint - chap-04.pptx

Microsoft PowerPoint - C_Programming_Basics.ppt [호환 모드]

슬라이드 1

Microsoft PowerPoint - chap12-고급기능.pptx

Microsoft PowerPoint - 5장 조건문 pptx

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

슬라이드 1

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

ABC 2장

Transcription:

CHAPTER 04. 연산자 수식과대입문의개념을이해한다. 연산자의종류와기능에대해살펴본다. 대입, 산술, 복합대입, 관계, 논리, 조건연산자증감, 비트, 형변환, 콤마, 주소, sizeof 연산자 연산자의우선순위와결합방향을이해한다.. 형변환원리, 종류, 필요성, 사용법을살펴본다.

4.0 개요 p.116 수식 (expression) 연산자 (operator) 와피연산자 (operand) 로구성 수식은평가 (evaluate) 되어최종적으로 1 개의결과값이됨 피연산자 : 상수, 변수, 또다른수식 1 + 2 sum - 10 (a+b) / 2 연산자 2

4.2 대입연산자 p.117 대입 (assignment) 연산자 = 특정값을변수에저장 ( 대입, 할당 ) 하는데사용 주의 수학의등호와완전히다른의미 결과값을변수에해당하는기억장소에저장 ( 대입 ) 하기 = 오른쪽의식을평가하여결과값구하기 변수명 = 식 3

4.2 대입연산자 p.117 형식변수명 = 값 ; 변수명 = 변수 ; 변수명 = 수식 ; // = 오른쪽값을변수에대입 // = 오른쪽변수에저장된값을 = 왼쪽변수에대입 // = 오른쪽수식결과값을변수에대입 예 x = 100; y = x + 1; ch = 'a'; a = b = c = 1; // x에 100을저장 // y에 101을저장 // ch에문자상수 'a' 를저장 // 다중대입 printf("%d", x = 2 + 3); 4

4.3 산술연산자 p.119 산술 (arithmetic) 연산자 5

4.3 산술연산자 p.119 주의 나머지연산자 (%) 정수형만가능 주의 나누기연산자 (/) C언어에서정수간연산결과는정수 몫과나머지 예 ) 5 / 2 5 % 2 5.0 / 2.0 참고 p. 120 [ 프로그램 4-2] 의 15 행 printf 함수에서 % 문자를출력하려면 %% 를사용해야함 6

7 printf(" 정수 1 >> "); scanf("%d", &x); 8 printf(" 정수 2 >> "); scanf("%d", &y); 10 11 printf("%d + %d = %d\n", x, y, x + y); 12 printf("%d - %d = %d\n", x, y, x - y); 13 printf("%d * %d = %d\n", x, y, x * y); 14 printf("%d / %d = %d\n", x, y, x / y); 15 printf("%d %% %d = %d\n\n", x, y, x % y); 16 17 printf("%d / %.1lf = %.1lf\n", x, 3.0, x / 3.0); 18 19 return 0; 20 } 4-2 산술연산자활용하기 (ch4-2.cpp) p.120 실행결과정수1 >> 10 정수2 >> 3 10 + 3 = 13 10-3 = 7 10 * 3 = 30 10 / 3 = 3 10 % 3 = 1 10 / 3.0 = 3.3 7

4.4 복합대입연산자 p.121 복합대입연산자 (compound assignment operator) 현재 a 변수의값에 b 를더한결과값을다시 a 에대입 a 의값을 b 만큼증가하기 8

4-3 복합대입연산자활용하기 p.122 5 int x, y; 6 7 x = y = 5; 8 9 printf("x = %d, y = %d\n", x, y); 10 printf("x += y 의결과는 %d\n\n", x += y); 11 12 printf("x = %d, y = %d\n", x, y); 13 printf("x -= y 의결과는 %d\n\n", x -= y); 14 15 printf("x = %d, y = %d\n", x, y); 16 printf("x *= y 의결과는 %d\n\n", x *= y); 17 18 printf("x = %d, y = %d\n", x, y); 19 printf("x /= y 의결과는 %d\n\n", x /= y); 20 21 printf("x = %d, y = %d\n", x, y); 22 printf("x %%= y 의결과는 %d\n", x %= y); 9

4.5 관계연산자 p.123 관계연산자 (relational operator) 좌우피연산자의크기를비교 참 / 거짓 p. 123 의 주의 x = y 10

4.5 관계연산자 p.124 주의 C 언어에서는숫자 0, 1 로논리값거짓, 참을대신 논리값과수치간의상호변환규칙 11

4-4 관계연산자활용하기 p.124 12

4.6 논리연산자 p.125 논리연산자 (logical operator) 논리값 ( 참과거짓 ) 에대한연산 결과는참 / 거짓 조건표현에주로사용 if ((year % 4) == 0 && (year % 100!= 0)) if ((average < 60) (absence > 12)) 13

4.6.1 논리식의표현 p.125 x가 5보다크고 10보다작으면참이고아니면거짓 을표현하면? 주의 수학식처럼줄여쓰기를하면안된다. 연산자의두피연산자의자료형은동일해야한다. // 잘못된식 5 < x < 10 // 올바른식 (5 < x) && (x < 10) 14

4-5 논리연산자활용하기 p.126 15

4.6.2 논리연산자의단축평가 p.127 단축평가 (short circuit evaluation) 란? 논리연산자특성에따라특정수식의평가를생략하는것 && 와 의왼쪽피연산자만으로결과값이결정되면오른쪽피연산자는평가하지않음 이식이거짓이므로 && 의결과는무조건거짓 오른쪽식은평가하지않음 16

4-6 논리연산자의단축평가 p.127 17

4.7 조건연산자 p.128 조건연산자 (conditional operator) 유일한삼항연산자 18

4-7 조건연산자활용하기 p.128 5 int x; 6 7 printf(" 정수입력 >> "); 8 scanf("%d", &x); 9 10 (x % 2 == 0)? printf("%d 는짝수입니다.\n", x) : 11 printf("%d 는홀수입니다.\n", x); 19

4.8 프로그래밍실습 : [ 프로그램 4-8] p.129 문제 두수를입력받아몫과나머지출력하기 해결과정 1. 두수 n1, n2 입력 7 printf(" 두정수입력 : "); 8 scanf("%d %d", &n1, &n2); 2. 두수중큰수는 max 에작은수는 min 에저장하기 10 (n1 > n2)? (max = n1, min = n2) : (max = n2, min = n1); 3. 큰수 max 를작은수 min 으로나눈몫과나머지출력하기 12 printf("\n>> 큰수 / 작은수 = %d\n", max / min); 13 printf(">> 큰수 %% 작은수 = %d\n", max % min); 20

4.9 증감연산자 p.130 증감연산자 (increment/decrement operator) 변수에만사용하며변수의값을 1 증가또는감소시킴 변수 ++ 변수값을 1 증가 변수 = 변수 +1 변수 += 1 변수-- 변수값을 1 감소 변수 = 변수 1 변수 -= 1 바른것은? x++; --x 100++ --(x+2) 주의 x+1 과 x++ 의차이는? 21

4.9 증감연산자 p.131 주의 전위형인지후위형인지에따라수식결과값이달라질수있다. 현재 x 값을사용하여수식을평가한후 1 증가 먼저 x 값을 1 증가한후이증가된값을수식평가에사용 22

4-9 증감연산자활용하기 p.132 6 7 x = ++x * 5; 8 y = y++ * 5; 9 z = 5 - --z; 10 11 printf("x = %d\n", x); 12 printf("y = %d\n", y); 13 printf("z = %d\n", z); x = x + 1; x = x * 5; y = y * 5; y = y + 1; z = z - 1; z = 5 - z; 책수정 23

4.10 비트연산자 p.133 비트연산자 (bit operator) 란? 비트단위로연산을수행 주의 비트연산의대상은반드시정수형 논리연산자 (!, &&, ) 는값단위 ( 논리값, 정수, 실수 ) 로연산 종류 비트논리연산자 : &,, ^, ~ 비트이동연산자 : <<, >> 24

4.10.1 비트논리연산자 p.133 2 진수각자리 ( 비트 ) 마다연산수행 비트 AND(&), 비트 R( ), 비트 XR(^), 비트 NT(~) 연산자 논리연산자와모양이비슷하므로구분해서사용할것 25

4-10 비트논리연산자활용하기 p.134 1 #include <stdio.h> 2 3 int main() 4 { 5 int x = 5, y = 12; 6 7 printf("%d & %d = %d\n", x, y, x & y); 8 printf("%d %d = %d\n", x, y, x y); 9 printf("%d ^ %d = %d\n", x, y, x ^ y); 10 printf("~%d = %d\n", x, ~x); 11 12 return 0; 13 } 26

[ 프로그램 4-10] 비트논리연산자활용하기 p.134 27

4.10.2 비트이동연산자 p.135 왼쪽비트이동연산자 (<<) 피연산자 << n 피연산자의각비트값을왼쪽으로한비트씩이동하기를 n번반복 왼쪽으로밀려난비트값은제거되고오른쪽빈비트는 0으로채워짐 곱셈효과 : 왼쪽으로 n비트이동 피연산자 2 n 부호없는자료형에사용하는것이바람직 맨왼쪽부호비트값이바뀔수있으므로 28

4.10.2 비트이동연산자 p.135 오른쪽비트이동연산자 (>>) 피연산자 >> n 피연산자의각비트값을오른쪽으로한비트씩이동하기를 n번반복 한비트씩이동시, 오른쪽끝에서밀려난비트값은제거되고왼쪽끝빈비트에는부호비트값 ( 양수 : 0, 음수 : 1) 이채워짐 나눗셈효과오른쪽으로 n비트이동 피연산자 / 2 n 정수간연산이므로정확히는몫을구하는효과를얻음일반곱셈, 나눗셈연산보다계산속도가매우빠름 29

4.10.2 비트이동연산자 p.135 30

4-11 비트이동연산자활용하기 p.136 3 int main() 4 { 5 int x = 15, n = 1; 6 7 printf("%d >> %d = %d\n", x, n, x >> n); 8 printf("%d >> %d = %d\n", x, n+1, x >> n + 1); 9 printf("%d >> %d = %d\n", x, n+2, x >> n + 2); 10 printf("%d << %d = %d\n", x, n, x << n); 11 printf("%d << %d = %d\n", x, n+1, x << (n + 1)); 12 printf("%d << %d = %d\n", x, n+2, x << (n + 2)); 13 14 return 0; 15 } 15 를 2 2 으로나눈몫 31

4.11 형변환연산자 p.137 형변환 (type conversion) 이란? 두피연산자의자료형은같아야함 서로다른경우하나로통일해야함 형변환이필요 피연산자 1 연산자피연산자 2 2 + 3.0 int형 (4바이트) double형 (8바이트) 형변환발생 2.0 형변환의종류 자동형변환 : 컴파일러가자동으로함 강제형변환 : 프로그래머가직접명시함 32

4.11.1 자동형변환 p.137 자동형변환 : 형넓힘 (promotion) 컴파일러가자동으로처리 예 ) 두피연산자의자료형이다를때 작은표현범위의자료형 큰표현범위의자료형으로변환 표현범위는 char < short < int, long < float <double int i = 100; double j = 1.23; printf("%.2lf", i+ j); 형넓힘변환이발생 int 형 + double 형 double 형 + double 형 100.0 + 1.23 33

4.11.1 자동형변환 p.138 자동형변환 : 형좁힘 (demotion) 예 ) 변수에값을대입할때발생 int i; 변수 = 식 ; 식의결과값은변수의자료형에맞게변환되어저장됨 큰자료형에서작은자료형으로변환시오차발생가능 의도적사용 ( 실수값의소수점위의값만필요한경우 ) 이아닌경우엔오차가발생할수있으므로주의해야함 i = 3.14; 형좁힘변환이발생 3.14 의. 이하값은절삭하여 int 형으로변환한후 i 에저장함 오차발생가능성경고메시지가나타남 의도적이라면다음의형변환연산자를사용해야경고가발생하지않음 34

4.11.2 강제형변환 p.139 프로그래머가형변환연산자 (type cast operator) 로형변환을직접지시 영구적인형변환이아니라캐스트연산자가사용된곳에서만일시적인형변환이적용됨 (double) 4 (double) sum (int) (sum + I) avg = (double) sum / 3; 정수간나눗셈에매우유용 주의 변수자체의기억장소크기를변경하는것이아니므로대입문왼쪽의변수에대해사용불가 (double) sales = sum * 9.5; 35

4-12 형변환연산자활용하기 p.140 3 int main() 4 { 5 char ch = 'A'; 6 int x = 10, y = 4, sum; 7 double pi = 3.14, avg; 8 9 sum = ch + 2; // 자동형넓힘변환 10 printf("sum = %d = %c \n", sum, sum); 11 12 sum = pi; // 자동형좁힘변환 13 printf("sum = %d\n", sum); 14 15 printf(" 정수간 x/y = %d \n", x / y); 16 printf(" 실수간 x/y = %lf \n", (double) x / (double) y);// 강제형변환 17 실행결과 sum = 67 = C sum = 3 정수간 x/y = 2 실수간 x/y = 2.500000 잘못된나눗셈 = 2 잘못된나눗셈 = 2.000000 정확한나눗셈 = 2.500000 36

4.11.2 강제형변환 p.140 6 int x = 10, y = 4, sum; 18, 21, 24 행의내용은반드시 이해한다. 일반적인 18 sum = (double) x / (double) y; 나눗셈에서엉뚱한결과값을 19 printf(" 잘못된나눗셈 = %d \n", sum); 얻는이유중의하나이다. 20 21 avg = (double) (x / y); 22 printf(" 잘못된나눗셈 = %lf\n", avg); 23 24 avg = (double) x / y; 25 printf(" 정확한나눗셈 = %lf \n", avg); 2 실행결과 sum = 67 = C sum = 3 정수간 x/y = 2 실수간 x/y = 2.500000 잘못된나눗셈 = 2 잘못된나눗셈 = 2.000000 정확한나눗셈 = 2.500000 37

4.12.1 콤마연산자 p.142 콤마연산자 (comma operator) 왼쪽부터수식계산 마지막으로계산한오른쪽수식값이최종결과값 38

4.12.2 주소연산자 p.142 주소연산자 (address operator) &( 앰퍼샌드 ) & 변수명 변수에할당된기억공간의주기억장치주소를구함 scanf 함수, 포인터에서주로사용 39

4.12.3 sizeof 연산자 p.142 sizeof 연산자 기억공간의크기 ( 바이트단위 ) 를구하는연산자 C 언어는컴파일러마다자료형이차지하는기억공간의크기가다르므로 sizeof 결과값은실행환경에따라달라질수있다. 40

4.12.3 sizeof 연산자 p.142 41

4-13 콤마연산자, 주소연산자, sizeof 연산자활용하기 p.143 1 #include <stdio.h> 2 3 int main() 4 { 5 char x = 'a'; 6 int y; 7 double z = 1.234; 8 9 printf("y 입력 : "); 10 scanf("%d", &y); 11 12 printf(" 변수 y 의값 = %d\n", y); 13 printf(" 변수 y 의주소 = %p\n", &y); 14 printf("\n"); 주소연산자 42

4-13 콤마연산자, 주소연산자, sizeof 연산자활용하기 p.143 16 y = (y = 3, y + 5); 17 printf("y = %d\n", y); 18 printf("char형변수 x의크기 = %d\n", sizeof x); 19 printf("int형변수 y의크기 = %d\n", sizeof y); 20 printf("double형변수 z의크기 = %d\n", sizeof(z)); 21 printf("float형의크기 = %d\n", sizeof(float)); 22 23 return 0; 24 } 43

4.13 연산자의우선순위와결합방향 p.144 연산자우선순위 식에괄호가없을때먼저수행되는연산자가정해져있다. 연산자결합방향 우선순위가같은연산자는결합 (associativity) 방향에따라순서대로적용됨 대부분왼쪽 오른쪽단항 / 조건 / 대입연산자 : 오른쪽 왼쪽 44

4.13 연산자의우선순위와결합방향 p.145 p.146 우선순위를잘모른다면? 괄호를이용강제로우선순위를지정 45

4-14 연산자의우선순위와결합방향이해하기 p.146 1 #include <stdio.h> 2 3 int main() 4 { 5 int x = 1, y = 2, z = 3; 6 7 printf("%d\n", 10 * 2 / 5 * 2); 8 printf("%d\n", 10-2 * 5 + 2 / 2); 9 printf("%d\n", ++x * z--); 10 printf("%d\n", x + z >= z +!y); 11 printf("%d\n", x y && z); 12 printf("%d\n", z += x >> 2 + ++y); 13 printf("%d\n", x = y = z = 5); 14 printf("%d\n", (x = 1 + 2, 2-1)); 15 16 return 0; 17 } 46

4.14 프로그래밍실습 p.147 문제 사용자에게서입력받은문자의실제비트열 (8 비트 ) 출력하기 분석 많은산업분야에서변수단위가아닌변수에포함된비트단위의값을이용한다. 특정비트의값이 1인지 0인지에따라로봇이팔을든상태 (1) 인지내린상태 (0) 인지를구분하거나특정스위치에해당하는비트의값이 1이면스위치가 on인상태, 0이면 off인상태임을알수있다. 이문제는특정위치의비트값이무엇인지를찾아낼때사용할수있다. 47

4.14.1 입력받은문자의비트열구하기 p.147 자료비트열 (8 비트 ) 중특정위치의비트값을찾는방법 마스크 (mask) 구하기 : 찾고자하는위치의비트만 1인비트열 자료비트열 & 마스크 결과비트열의정수값이 0 찾는위치의비트값은 0 0 아닌정수값 찾는위치의비트값은 1 첫째비트값찾기 마스크비트값이 1 이므로 & 연산결과는자료비트값과같은값이된다. 마스크비트외비트들은모두 0 이므로 & 연산결과는 0 48

4.14.1 입력받은문자의비트열구하기 p.148 해결과정 : 자료비트열 B 의오른쪽에서 n 번째비트값찾기 1. 오른쪽에서 n 번째비트만 1 인마스크비트열 M 구하기 : M = (1 << n) 맨오른쪽끝에서 0 번째, 1 번째, 순으로간주하여설명한것임 오른쪽에서 7 번째라면실제로는 8 번째비트이다. 2. B 와 M 에대해비트 AND 연산을한비트열 R 구하기 : R = B & M 3. 결과 R 의정수값이 0 이면 0 을, 0 이아니면 1 을출력 예 ) a 의비트열 B 의오른쪽에서 7 번째비트의값찾기과정 1 1 의비트열 0 0 0 0 0 0 0 1 마스크 ( 1 << 7) 비트열 M 1 0 0 0 0 0 0 0 2 a 의비트열 B 0 1 1 0 0 0 0 1 B & M 결과비트열 0 0 0 0 0 0 0 0 49

4-15 입력받은문자의비트열구하기 (ch4-15.cpp) p.148 5 char ch; 6 오른쪽에서 7번째즉왼쪽에서 7 printf(" 문자입력 : "); 1번째비트만 1인마스크비트열 8 scanf("%c", &ch); 9 10 printf("%2d", ch & (1<<7)? 1 : 0); 11 printf("%2d", ch & (1<<6)? 1 : 0); 12 printf("%2d", ch & (1<<5)? 1 : 0); 11 행과정 1의비트열마스크 ( 1 << 6) 비트열 ch( a ) 의비트열 ch & 마스크결과비트열 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 50