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

Similar documents
OCW_C언어 기초

int main(void) int a; int b; a=3; b=a+5; printf("a : %d \n", a); printf("b : %d \n", b); a b 3 a a+5 b &a(12ff60) &b(12ff54) 3 a 8 b printf(" a : %x \

untitled

Microsoft PowerPoint - chap04-연산자.pptx

중간고사

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

untitled

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

chap8.PDF

Microsoft PowerPoint - [2009] 02.pptx

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

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

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

untitled

Line (A) å j a k= i k #define max(a, b) (((a) >= (b))? (a) : (b)) long MaxSubseqSum0(int A[], unsigned Left, unsigned Right) { int Center, i; long Max

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

Chapter_06

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

PowerPoint Presentation

Microsoft PowerPoint - chap10-함수의활용.pptx

0. 표지에이름과학번을적으시오. (6) 1. 변수 x, y 가 integer type 이라가정하고다음빈칸에 x 와 y 의계산결과값을적으시오. (5) x = (3 + 7) * 6; x = 60 x = (12 + 6) / 2 * 3; x = 27 x = 3 * (8 / 4

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

Infinity(∞) Strategy

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

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

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

PowerPoint 프레젠테이션

슬라이드 1

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

Microsoft PowerPoint - chap05-제어문.pptx

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - Chapter_02.pptx

Microsoft PowerPoint - chap-05.pptx

Microsoft PowerPoint - ch07 - 포인터 pm0415

OCW_C언어 기초

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap-06.pptx


슬라이드 1


Microsoft PowerPoint - ch01.ppt

Microsoft PowerPoint - chap06-2pointer.ppt

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

<4D F736F F F696E74202D20C1A635C0E520BCF6BDC4B0FABFACBBEAC0DA>

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

03장.스택.key

ch15

<4D F736F F F696E74202D20C1A63134C0E520C6F7C0CEC5CD5FC8B0BFEB>

C 프로그래밊 개요

Microsoft PowerPoint - chap06-1Array.ppt

Microsoft PowerPoint - chap12-고급기능.pptx

슬라이드 1

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

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

쉽게 풀어쓴 C 프로그래밍

歯7장.PDF

쉽게 풀어쓴 C 프로그래밍

chap7.PDF

Microsoft PowerPoint - Chapter_04.pptx

chap 5: Trees

C++-¿Ïº®Çؼ³10Àå

PowerPoint 프레젠테이션

Microsoft PowerPoint - Chapter_05.pptx

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

: 1 int arr[9]; int n, i; printf(" : "); scanf("%d", &n); : : for(i=1; i<10; i++) arr[i-1] = n * i; for(i=0; i<9; i++) if(i%2 == 1) print

2 장수의체계 1. 10진수 2. 2진수 3. 8진수와 16진수 4. 진법변환 5. 2진정수연산과보수 6. 2진부동소수점수의표현 한국기술교육대학교전기전자통신공학부전자전공 1

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - 제11장 포인터

PowerPoint 프레젠테이션

1 장 C 언어복습 표준입출력배열포인터배열과포인터함수 const와포인터구조체컴파일러사용방법 C++ 프로그래밍입문


; struct point p[10] = {{1, 2, {5, -3, {-3, 5, {-6, -2, {2, 2, {-3, -3, {-9, 2, {7, 8, {-6, 4, {8, -5; for (i = 0; i < 10; i++){ if (p[i].x > 0 && p[i

11장 포인터

Data Structure

Microsoft PowerPoint - Java7.pptx

chap10.PDF

컴파일러

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

BMP 파일 처리

이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2

2015 개정교육과정에따른정보과평가기준개발연구 연구책임자 공동연구자 연구협력관

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202834C1D6C2F7207E2038C1D6C2F729>

설계란 무엇인가?

ABC 3장

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

Microsoft PowerPoint - 07_(C_Programming)_(Korean)_Composite_Data_Types

제 15 장전처리및비트연산 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.

歯9장.PDF

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

C++ Programming

본 강의에 들어가기 전

Microsoft PowerPoint - gnu-w10-c-chap11

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20C1A633C0E52043C7C1B7CEB1D7B7A5B1B8BCBABFE4BCD2>

Microsoft PowerPoint - 5장 조건문 pptx

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

6.1 Addresses and Pointers Recall memory concepts from Ch2 ch6_testbasicpointer.c int x1=1, x2=7; double distance; int *p; int q=8; p = &q; name addre

Chapter 4. LISTS

Microsoft PowerPoint - chap-07.pptx

Transcription:

비트연산자 1 1

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

진수법! 2, 10, 16, 8! 2 : 0~1 ( )! 10 : 0~9 ( )! 16 : 0~9, 9 a, b, c, d, e, f ( )! 8 : 0~7 ( ) 3 3

진수법 2 10 16 8 0000 0000 0 0 0 0000 0001 1 1 1 0000 0010 2 2 2 0000 0011 3 3 3 0000 0100 4 4 4 0000 0101 5 5 5 0000 0110 6 6 6 0000 0111 7 7 7 0000 1000 8 8 10 2 10 16 8 0000 1001 9 9 11 0000 1010 10 a 12 0000 1011 11 b 13 0000 1100 12 c 14 0000 1101 13 d 15 0000 1110 14 e 16 0000 1111 15 f 17 0001 0000 16 10 20 0001 0001 17 11 21 10 == 0xa == 012 4 4

2 진수를 10 진수로표현하는방법 2 10 2 10 2 10 0000 0000 0000 0110 0000 1100 0000 0001 0000 0111 0000 1101 0000 0010 0000 1000 0000 1110 0000 0011 0000 1001 0000 1111 0000 0100 0000 1010 0001 0000 0000 0101 0000 1011 0001 0001 5 5

2 진수를 16 진수와 8 진수로표현하는방법 6 6

비트연산자! & a & b AND a b OR ^ a ^ b XOR ~ ~a NOT << a << 3 >> a >> 1 7 7

비트연산자 : & 연산자 (1/2)! AND! 1 1 0 & 0 0 0 & 1 0 1 & 0 0 1 & 1 1 8 8

비트연산자 : & 연산자 (2/2) #include<stdio.h> int main(void) { int num1=20, num2=16; int result1; result1 = num1 & num2; printf(" & %d \n", result1); // 16 } return 0; 9 9

비트연산자 : 연산자 (1/2)! OR! 1 1 0 0 0 0 1 1 1 0 1 1 1 1 10 10

비트연산자 : 연산자 (2/2) #include<stdio.h> int main(void) { int num1=20, num2=16; int result1; result1 = num1 num2; printf(" %d \n",result1); } return 0; 11 11

비트연산자 : ^ 연산자 (1/2)! XOR! 1 0 ^ 0 0 0 ^ 1 1 1 ^ 0 1 1 ^ 1 0 12 12

비트연산자 : ^ 연산자 (2/2) #include<stdio.h> int main(void) { int num1=20, num2=16; int result1; result1 = num1 ^ num2; printf(" ^ %d \n",result1); return 0; } 13 13

비트연산자 : ~ 연산자 (1/2)! NOT! ~ 0 1 ~ 1 0 14 14

비트연산자 : ~ 연산자 (2/2) #include<stdio.h> int main(void) { int num1=20; int result1; result1 = ~num1; printf(" ~ %d \n",result1); // -21 } return 0; 15 15

비트연산자 : 비트이동연산자 (1/5)!! << ( )! >> ( ) 16 16

비트연산자 : 비트이동연산자 (2/5) #include<stdio.h> int main(void) { int num1=10; int result1; result1 = num1 << 2; printf(" << %d \n", result1); return 0; } 17 17

비트연산자 : 비트이동연산자 (3/5) result1 = num1 << 2; 1 2 18 18

비트연산자 : 비트이동연산자 (4/5) #include<stdio.h> int main(void) { int num1=10; int num2=-10; int result1; int result2; result1 = num1 >> 1; result2 = num2 >> 1; } printf(" >> %d \n", result1); printf(" >> %d \n", result2); return 0; 19 19

비트연산자 : 비트이동연산자 (5/5) result1 = num1 >> 1; 1 2 result2 = num2 >> 1; 20 20

음수만들기 21 + (-21) = 0 이됨을확인할수있다. 21 21

연습문제 ( 양수, 음수표현문제 ) 가정 : 1 바이트를가지고데이터를표현한다. 따라서가장왼쪽에존재하는비트는부호비트가된다. 문제 1) 양의정수 01001111 00110011 문제 2) 음의정수 10101001 11110000 22 22

연습문제 ( 양수, 음수표현문제 ) 가정 : 1 바이트를가지고데이터를표현한다. 따라서가장왼쪽에존재하는비트는부호비트가된다. 문제 1) 양의정수 01001111 00110011 문제 2) 음의정수 10101001 11110000 =2 6 +2 3 +2 2 +2 1 +2 0 =2 5 +2 4 +2 1 +2 0 = (2 6 +2 4 +2 2 +2 1 +2 0 ) = 2 4 23 23

연습문제 문제 3) 입력받은음의정수값을양의정수값으로바꿔서출력하는프로그램을작성해보자. 단, 반드시비트단위연산자를사용해서구현해야한다. include <stdio.h> int main(void) { int n; } printf("type a negative integer: "); scanf("%d", &n); n =???; n =???; printf("%d \n", n); return 0; 24 24

연습문제 문제 3) 입력받은음의정수값을양의정수값으로바꿔서출력하는프로그램을작성해보자. 단, 반드시비트단위연산자를사용해서구현해야한다. include <stdio.h> int main(void) { int n; } printf("type a negative integer: "); scanf("%d", &n); n = ~n; n = n+1; printf("%d \n", n); return 0; 25 25

연습문제 문제 4) 입력받은값의두배를계산해서출력해주는프로그램을 *( 곱셈 ) 연산이아닌, 비트이동 ( 쉬프트 ) 연산 (<< 또는 >>) 을이용해서구현해보자. 주의 ) 입력값이 -2^30-1 (= -1073741825) 에서 2^30 (=1073741824) 를벗어날경우전혀다른값이출력됨에주의하라. #include <stdio.h> int main(void) { int n; } printf("type an integer value: "); scanf("%d", &n); n =??? ; // double the value of n! printf("%d \n", n); return 0; 26 26

연습문제 문제 4) 입력받은값의두배를계산해서출력해주는프로그램을 *( 곱셈 ) 연산이아닌, 비트이동 ( 쉬프트 ) 연산 (<< 또는 >>) 을이용해서구현해보자. 주의 ) 입력값이 -2^30-1 (= -1073741825) 에서 2^30 (=1073741824) 를벗어날경우전혀다른값이출력됨에주의하라. #include <stdio.h> int main(void) { int n; } printf("type an integer value: "); scanf("%d", &n); n = n<<1; // double the value of n! printf("%d \n", n); return 0; 27 27

연습문제 5-3) 연산우선순위관련 #include <stdio.h> int main(void) { int x=3,y=5,z=3,k=2; int a; a = x < y x < z && z < k; printf("the Result 1 a : %d \n", a); /* The operator ' ' has a higherf priority than '&&'. x < y x < z && z < k = x < y (x < z && z < k) = 1 (0 && 0) = 1 0 = 1 */ a = (x < y x < z) && z < k; printf("the Result 2 a : %d \n", a); /* The part within parentheses has the priority. (x < y x < z) && z < k = (1 0) && 0 = 1 && 0 = 0 */ return 0; } 28 28

5-4) 세개의입력숫자중최대값구하기 연습문제 #include<stdio.h> int main(void) { int a,b,c; int temp,max; printf("put an integer :"),scanf("%d",&a); printf("put an integer :"),scanf("%d",&b); printf("put an integer :"),scanf("%d",&c); temp = (a>b)?a:b; max = (temp>c)?temp:c; printf("the maximum : %d\n",max); } return 0; 29 29

5-7) 네자리의 2 진수입력을받아 10 진수값을출력하기. 연습문제 #include <stdio.h> int main(void) { int first, second, third, fourth, decimal; int dec1, dec2; // for temporary decisions printf("--------between 0000 and 1111, Convert to Demical Number-------\n"); printf("the First : "), scanf("%d",&first); printf("the Second : "), scanf("%d",&second); printf("the Third : "), scanf("%d",&third); printf("the Fourth : "), scanf("%d",&fourth); decimal = (first*1)+(second*2)+(third*4)+(fourth*8); dec1 = first > 1 second > 1 third > 1 fourth > 1; dec2 = first < 0 second < 0 third < 0 fourth < 0; (dec1 dec2)? printf("\n Wrong Input \n") : printf("\nthe binary input %d%d%d%d is converted to the decimal number %d.\n", fourth, third, second, first, decimal); } return 0; 30 30

5-8) 시, 분, 초를입력받아초로계산하기. 연습문제 include <stdio.h> int main(void) { int hour,min,sec,total; int dec1, dec2; printf("put an hour :"); scanf("%d",&hour); printf("put a minute :"); scanf("%d",&min); printf("put a second :"); scanf("%d",&sec); dec1 = hour >= 24 min >= 60 sec >= 60; dec2 = hour < 0 min < 0 sec < 0; total = (hour * 3600) + (min * 60) + sec; (dec1 dec2)? printf("\n Wrong Input \n") : printf("%d\n",total); } return 0; 31 31

5-9) 파운드를킬로그램으로계산하기. 연습문제 #include <stdio.h> int main(void) { double pound = 0.45; double kg; } kg = 150*pound; printf("the 150lb of flour is %.2lf kg.\n",kg); 32 32