몽상실현개발주의

[따배씨] 15.3 &를 이용하는 십진수 -> 이진수 연습 문제 본문

Language/C

[따배씨] 15.3 &를 이용하는 십진수 -> 이진수 연습 문제

migrationArc 2021. 7. 21. 23:52

[따배씨] 15.3 &를 이용하는 십진수 -> 이진수 연습 문제

따배씨 - 따라하며 배우는 C언어

15강 비트 다루기

15.3 &를 이용하는 십진수 -> 이진수 연습 문제

#include <stdio.h>
#include <math.h>   // pow()
#include <string.h> // strlen()
#include <stdlib.h> // exit()
#include <stdbool.h>

unsigned char to_decimal(const char bi[]);
void print_binary(const unsigned char num);

int main()
{
    unsigned char i = to_decimal("01000110");
    unsigned char mask = to_decimal("00000101");
    
    print_binary(i);
  	// Decimal  70 	== Bianry 01000110
    print_binary(mask);
  	// Decimal   5 	== Bianry 00000101
    print_binary(i & mask);
  	// Decimal   4 	== Bianry 00000100
    
    return 0;
}


unsigned char to_decimal(const char bi[])
{
    const size_t L = strlen(bi);
    unsigned sum = 0;
    for (size_t i = 0; i < L; i++)
    {
        if (bi[i] == '1')
            sum += (int)pow(2, L - 1 - i);
    }
    
    return sum;
}


void print_binary(const unsigned char num)
{
    printf("Decimal %3d \t== Bianry ", num);
    
    const size_t bits = sizeof(num) * 8;
    
    for (size_t i = 0; i < bits; i++)
    {
        const unsigned char mask = (unsigned char)pow((double)2, (double)(bits - 1 - i));
        
        if ((num & mask) == mask)
            // 2진 수의 자리수를 검사하는 mask 변수를 만들어 이진수의 자리수 bit 연산
            printf("%d", 1);
        else
            printf("%d", 0);
    }
    printf("\n");
    
}

 

 

 


이 글의 모든 사진과 내용의 출처는 홍정모 교수님께 있음을 알려드립니다.

http://blog.naver.com/atelierjpro

 

실리콘 밸리의 프로그래머 : 네이버 블로그

안녕하세요! 홍정모 블로그에 오신 것을 환영합니다. 주로 프로그래밍 관련 메모 용도로 사용합니다. 강의 수강하시는 분들은 홍정모 연구소 카페로 오세요.

blog.naver.com

http://www.inflearn.com/course/following-c

 

홍정모의 따라하며 배우는 C언어 - 인프런 | 강의

'따배씨++'의 성원에 힘입어 새롭게 개발된 C 언어로 시작하는 프로그래밍 입문 강의입니다. '따배씨'와 함께 프로그래밍 인생을 업그레이드 해보세요., 따라하며 배우는 C언어 '따배씨++'의 성원

www.inflearn.com

Comments