//今天看MFC里面有个打印二进制的函数,觉得他的实现不太完美,于是动手写了一个。可以打印int, long, float, double的二进制格式。 不过感觉float 和 double写的还是需要 改进 #include <iostream> /* 打印二进制 *只支持整数和字符型 by mingspy *求助更好的算法 */ template < class T> void toBinary(T t) { int n = sizeof(T) * 8; //get T's bits; //std::cout<<n<<std::endl; long msk = 1 << (n - 1); // a mask for ( int i = 0; i < n ; i ++) { std::cout <<((msk & (t << i))?'1':'0'); } } template <> void toBinary(double d) { char *p = (char *)&d; for( int i = 0; i < sizeof(d); i++) { //std::cout<<*p<<": "; toBinary(*p ++); //std::cout<<std::endl; } } template <> void toBinary(float d) { char *p = (char *)&d; for( int i = 0; i < sizeof(d); i++) { //std::cout<<*p<<": "; toBinary(*p ++); //std::cout<<std::endl; } } int main(void) { toBinary(-1); std::cout<<std::endl; toBinary('1'); std::cout<<std::endl; int i = 0x01020304; std::cout<<&i<<std::endl; float d = 1.2f; std::cout<<&d<<std::endl; toBinary(d); std::cout<<std::endl; return 0; }