몽상실현개발주의

[따배씨] 15.4 비트 단위 논리 연산자 확인해보기 본문

Language/C

[따배씨] 15.4 비트 단위 논리 연산자 확인해보기

migrationArc 2021. 7. 21. 23:54

[따배씨] 15.4 비트 단위 논리 연산자 확인해보기

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

15강 비트 다루기

15.4 비트 단위 논리 연산자 확인해보기

#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include <stdlib.h>

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

int main()
{
    /*
        Regular Logical Operators : &&, ||, and !
     
        bool have_apple = true;
        bool like_apple = true;
        if (have_apple && like_apple)
            eat_apple();
     
        Bitwise Logical Operators :
            - Bitwise NOT ~
            - Bitwise AND &
            - Bitwise OR |
            - Bitwise EXCLUSIVE OR ^
     */
    
    unsigned char a = 6;
    unsigned char b = 5;
    
    printf("%hhu\n", a);
    print_binary(a);
  	// 6
		// Decimal   6 	== Bianry 00000110
    
    printf("%hhu\n", b);
    print_binary(b);
  	// 5
		// Decimal   5 	== Bianry 00000101
    
    printf("%hhu\n", a & b);
    print_binary(a & b);
  	// 4
		// Decimal   4 	== Bianry 00000100
    
    printf("%hhu\n", a | b);
    print_binary(a | b);
  	// 7
		// Decimal   7 	== Bianry 00000111
    
    printf("%hhu\n", a ^ b);
    print_binary(a ^ b);
  	// 3
		// Decimal   3 	== Bianry 00000011
    
    printf("%hhu\n", ~a);
    print_binary(~a);
  	// 249
		// Decimal 249 	== Bianry 11111001
    
    return  0;
}

unsigned char to_decimal(const char bi[])
{
    const size_t L = strlen(bi);
    unsigned char 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