>>780 �@ 前スレ913,936,955のちょこっと改造版
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
void binary(unsigned char n, char *s) { int i; for (i = 0; i < 8; i++) { *s = (n & 0x80) ? '1' : '0'; s++; n <<= 1; } *s = '\0'; }
void print(unsigned char n) { char b[9]; binary(n, b); printf("%3d, %02x, %s\n", n, n, b); }
void _gets(char *s, int size) { int c; while ((c = getchar()) != '\n') { if (size > 1) { if (!isdigit(c)) { puts("エラー"); exit(0); } *s++ = c; size--; } } *s = '\0'; }
void main() { char s[4]; unsigned char n; _gets(s, sizeof(s)); if (s[0] == '\0') { puts("エラー"); exit(0); } n = atoi(s); if (n < 0 || n > 255) { puts("エラー"); exit(0); } print(n); print(n << 1); print(n >> 1); print(~n); }