728x90
반응형
#include <stdio.h>
#include <math.h> //pow()
#include <string.h> //strlen()
#include <stdlib.h> //exitd()
#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);
print_binary(mask);
print_binary(i & mask);
return 0;
}
unsigned char to_decimal(const char bi[]) {
const size_t bits = strlen(bi);
unsigned char sum = 0;
for (size_t i = 0; i < bits; i++)
{
if (bi[i] == '1')
sum += (int)pow(2, bits - 1 - i);
else if (bi[i] != '0') {
printf("wrong character: %c", bi[i]);
exit(1);
}
}
return sum;
}
void print_binary(const unsigned char num)
{
printf("decimal %3d \t == Binary ", 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));
// unsigned char mask = pow(2, (bits -1-i));
if ((num & mask) == mask)
printf("%d", 1);
else
printf("%d", 0);
}
printf("\n");
}
728x90
반응형
'C언어' 카테고리의 다른 글
비트단위 연산자 종류별 예시 (0) | 2023.06.03 |
---|---|
자료형의 크기 및 범위 (0) | 2023.06.03 |
%hhu %hhd 차이 (0) | 2023.06.03 |
개행문자 r \ n, \ n, \t, \b (1) | 2023.06.03 |
2진수 10진수 16진수 변환 (0) | 2023.01.26 |