프로젝트 & 과제/3학년

[C언어] 비트 연산

qqlzzb 2022. 1. 26. 13:57

개요

프로그래밍 언어 : C언어

과제 수행 날짜 : 2020.09.18

과제 개요 : 변수 A의 상위 4비트와 변수 B의 하위 4비트를 결합한 것을 A에 저장하고, 원래 변수 A의 하위 4비트와 변수 B의 상위 4비트를 결합한 것을 B에 저장하는 프로그램

 

코드

#include <stdio.h>
int main()
{
    unsigned char A = 139;
    unsigned char B = 53;
    
    printf("처리 전 값 : A = %d, B = %d\n", A, B);
    
    unsigned A_l = A & 0x0f; //A의 하위비트 저장
    
    A = A & 0xF0 ^ B & 0x0F;
    B = A_l << 4 | B >> 4;
    
    printf("처리 후 값 : A = %d, B = %d\n", A, B);
    
    return 0;
}

 

결과

1) 처리 전과 처리 후의 값 변화

결과 화면

 

처리 전의 A는 139, B = 53으로, 이를 비트로 나타내면 

A = 1000 1011, B = 0011 0101 이 된다.

그리고 A는 A의 상위비트 + B의 하위비트이고, B는 A의 하위비트 + B의 상위비트이므로

A = 1000 0101 = 133, B = 1011 0011 = 179가 된다.

 

2) 비트 연산 과정

코드가 진행되는 과정을 두 변수 값의 비트 형태로 표현

 

- A 만들기

 

- B 만들기