ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • C언어_04장
    Computer Sci‧ence/C 2014. 2. 6. 16:56
    반응형

    1. 비트 vs 바이트

         1    vs 8


    2. 8진수와 16진수

        int=10;   //10진수

        int= 0xa //16진수: 16진수는 0x를 붙인다. 출력시에는 %x 로 나타낸다. 

        int= 012 //8진수: 8진수는 0으로 시작한다. 

    ??코드같은데에서 0x로 시작하는거 다 16진수 표기인가? 문득 이런 생각이 드네...



    가장 왼쪽에 위치하고 있는 비트가 부호비트이다. (MSB: Most Significant Bit)

    0이면 양수 1이면 음수를 나타낸다. 

    ex) 00000101 =5

    unsigned 가 붙으면 표현의 범위가 달라진다. 첫 비트를 부호에 사용하지 않는다는 의미로 데이터 값의 범위가 두배가 된다. 

    기본 자료형 중에서 정수형 자료형(char, int, short..) 에만 가능하며 실수형 자료형에는 붙일 수 없다. 


    값을 마이너스로 표현하는 방법은 해당 양수의 보수를 취하는 방법으로 나타낸다


    0 

    0 

    0 

    0 

    0 

    1 

    0 

    1 

    1 

    1 

    1 

    1 

    0 

    1 

    0 

    0 

    0 

    0 

    0 

    0 

    0 

    0 

    먼저 위의수의 보수를 취한뒤, +1을 더하는 방법으로 나타낸다. (마지막줄은 더한 뒤의 결과: ex 5+ -5=0)

    이를 2의 보수법에 의한 음수 표현방법이라고 한다. 


    실수표현의 방법 ±(1.m) X2e-127

    * 하지만 이런 실수 표현에는 오차가 존재한다. 이것을 부동소수점 오차라고 얘기한다. 근사치의 오차가 존재하기 때문이다. 


    3. 비트 단위 연산 (p97)

    : &   AND (15&20 을 하게되면, 15와 20은 비트로 (2진수 형태) 표현된뒤 비트단위의 AND가 행해져 결과값은 4가 된다)

    : |    OR

    : ^   XOR (두개의 비트가 서로 다를 경우 1을 반환)

    : ~   NOT

    : << 왼쪽으로 이동 2    (1 비트씩 왼쪽으로 이동할 때마다 값이 두배가 된다) 

    : >> 오른쪽으로 이동 2 (시스템에 따라 그의 값은 변화하게 된다) 


    #include <stdio.h>


    int main(void)

    {


    int a = 15;

    int b = 20;

    int c = a&b;

    int d = a | b;

    int e = a^b;

    int f = ~a;


    printf("AND 연산 결과: %d\n", c);

    printf("OR 연산 결과: %d\n", d);

    printf("^의 연산결과: %d\n", e);

    printf("~의 연산결과: %d 결과는 음수, 부호가 반전되었기 때문이다. \n", f);


    return 0;


    }


    연습문제 4-4

    int main(void)

    {


    int a;

    int opp00,opp01;

    int val20, result20;




    printf("음의 정수값을 입력: ");

    scanf_s("%d", &a);


    opp00 = ~a;

    opp01 = opp00 + 1;


    printf("음의 정수의 값: %d\n", opp01);


    printf("2배를 원하는 수:");

    scanf_s("%d", &val20);

    result20 = val20 << 1;

    printf("결과값: %d\n", result20);




    return 0;






    이번장에서 공부한 내용 정리

    1. 2진수와 16진수에 대해서 살펴보았다. 

    2. 정수와 실수가 컴퓨터에 의해서 표현되는 방법을 살펴보앗다. 

    3. 실수를 표현하는데 있어서 오차가 발생하는 이유를 살펴보았다. 가장 중요한 내용이라 할 수 있다. 

    4. %d 이외에 %f 라는 서식 문자에 대해서 살펴보았다. 

    5. 비트 단위의 연산에 대해 살펴보 

    반응형

    'Computer Sci‧ence > C' 카테고리의 다른 글

    C언어_07장  (0) 2014.02.11
    C언어_05장  (0) 2014.02.07
    techdaysmini 토요세미나 시리즈 1회 - Visual Studio 제대로 파헤쳐보기 1탄  (0) 2014.02.06
    C언어_03장  (0) 2014.02.05
    C언어_02장  (0) 2014.02.04

    댓글

Designed by Tistory.