- 114 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 12:40:22 ]
- >>112
#include <stdio.h> #include <limits.h> int is_little_endian(){ int x = 1; return *(char*)&x; } typedef unsigned char byte_t; void print_bytebits_(byte_t value){ byte_t mask = 1 << (sizeof(byte_t) * CHAR_BIT - 1); for(;mask; mask >>=1) putchar(mask & value ? '1' : '0'); } void print_bits(void *p, int bytesize){ byte_t *p_byte = (byte_t*)p; int i; if(is_little_endian()){ for(i=bytesize-1; i>=0; i--) print_bytebits_(p_byte[i]); }else{ for(i=0; i<bytesize; i++) print_bytebits_(p_byte[i]); } } int main(){ double values[] = {1.0, 0.1, 0.0/0.0, -1.0/0.0, 1.0/0.0, -3.14}; int i; for(i=0; i<sizeof(values)/sizeof(*values); i++){ print_bits(&values[i], sizeof(double)); printf("(%.02f)\n", values[i]); } return 0; }
|

|