asm, c, c++ are my all
-- Core In Computer
posts - 139,  comments - 123,  trackbacks - 0

[转自沐枫兄]用bitset进行2进制输入输出

  C/C++内置的输入、输出,对整数进制只支持三种:8进制、10进制、16进制。记得很久以前,有好几次想用到2进制的输入输出,最终只好自已转换。
  昨天kaikai突然发了一个POST:
kaikai:
看看能不能把这个程序改得更短
?


#include 
< cstdio >
int  main()
{
    
char * a,b[ 33
];
    scanf(
" %*d "
);
    
while (scanf( " %s " ,b) == 1
)
    
{    
        
int  d = 0
;
        
for (a = b; * a;)d = d * 2 |* a ++% 2
;
        printf(
" %d.%d.%d.%d\n " ,d >> 24 & 255 ,d >> 16 & 255 ,d >> 8 & 255 ,d & 255
);
    }

    
return   0 ;
}

 
  一眼看过去,呵呵,输入输出不可省,核心还是二进制的转换问题。于是想起以前曾经做过的事情,学习多了,直觉的可以用bitset来实现。打开MSDN,查找bitset,嘿,果然有定义流输入操作符。
  写了一个测试:
#include  < iostream >
#include 
< bitset >
using   namespace  std;

void
 main()
{
    bitset
< 32 >
 a;
    cin 
>>
 a;
    cout 
<<  a.to_ulong()  <<
 endl;    
}
  呵呵,搞定了,输入2进制,输出10进制,完全正常。以后输入2进制串的时候,就不需要自已转换了。
posted on 2006-06-29 20:22 Jerry Cat 阅读(350) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理



<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

常用链接

留言簿(7)

随笔档案

最新随笔

搜索

  •  

最新评论

阅读排行榜

评论排行榜