printf("%x") 없이 이진수를 16진수로 바꾸는 프로그램 만들고 싶습니다.
글쓴이: harry p / 작성시간: 일, 2018/01/14 - 3:50오후
putchar ('0' + 2) 은 출력 "2"
putchar ('a' + 1) 은 출력 "b",
putchar('a' + 2) 은 출력 "c",
로 출력하려고 하는데요.
#include <stdio.h> int main(void) { printf("\n"); print_binary(65535); print_binary(1<= 0) { int mask = 1 << curr_bit_num; int bit = ((mask & num) >> curr_bit_num) & 1; putchar('0' + bit); if (curr_bit_num > 0 && curr_bit_num % 4 == 0) { putchar('_'); } curr_bit_num--; } printf(" is binary for %d\n", num); }
이런 코드가 있습니다.
근데 여기서 함수를 추가해서 출력 하라는데
도저히 무슨 말인지 모르겠어서 질문 올립니다.....
Forums:
https://linux.die.net/man/3
https://linux.die.net/man/3/putchar
putchar 함수를 오버로딩 하려는 건가요?
질문의 뜻을 잘 모르겠네요.
세벌 https://sebuls.blogspot.kr/
죄송합니다.
죄송합니다.
제가 코드를 잘못 올렸네요.
void print_binary(double num) ;
int main(void) {
printf("\n");
print_binary(65535);
print_binary(1<<31 | 1<<30 | 1<<5 | 1<<0);
print_binary(-7);
print_binary(-7.0);
print_binary(42);
printf("\n");
return 0;
}
void print_binary(double num) {
int curr_bit_num = (sizeof(int) * 8 - 1);
while (curr_bit_num >= 0) {
int mask = 1 << curr_bit_num;
int bit = ((mask & num) >> curr_bit_num) & 1;
putchar('0' + bit);
if (curr_bit_num > 0 && curr_bit_num % 4 == 0) {
putchar('_');
}
curr_bit_num--;
}
printf(" is binary for %d\n", num);
}
이 코드 입니다.
소스코드는 code 태그 안에 넣어주셔요.https:
소스코드는 code 태그 안에 넣어주셔요.
https://kldp.org/node/158191 참고.
소스코드 보기 불편하면, 바라는 답을 얻을 확률이 낮아지겠죠?
세벌 https://sebuls.blogspot.kr/
#include <stdio.h>
[schoi0@SEL-SCHOI0-D2 net]$
bit field 사용할 땐 항상 endian 에 맞춰 field 순서를 완전히 뒤집어줘야해서...
예 옳은 지적이십니다.
예 옳은 지적이십니다.
그런데 고기를 잡아서 요리까지 해주는건 아닌거 같아서요...
엔디안 검사하고 엔디안 마다 조건부 컴파일로 비트필드 순서를 뒤집 짓까지하는 정성은 읍지영...
감사합니다.
감사합니다.
댓글 달기