博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

帅得不敢出门

热爱c++ 博客文章多为转载(帖子后面有带原文链接的)以做收藏 若有误处 望多多赐教
   stupidpig.cublog.cn
关于作者  
姓名:帅得不敢出门
职业:学生
年龄:22
位置:福州
C++高手群:3503799
个性介绍:新博客路过也帮推荐下谢谢

我的分类  




c++中输出二进制
 
输出二进制形式
不需要用数组,仅供参考。
复制内容到剪贴板代码:
#include <iostream>
using namespace std;
int main()
{
    int n;
    cout << "input n:";
    cin >> n;
    for(int i=1; i<=32; i++){
        cout << (n<0?1:0) << (i%8==0?" ":"");
        n = n<<1;
    }
    cout << endl;
}
 
 
template<typename T>
void Bits(T const& e)
{
   
int n(sizeof(T));
   
char* ch=(char*)&e;
   
for(int i(n-1),j;i>=0;--i)
    {
       
for(j=7;j>=0;--j)
            ch[i]
&(char(1)<<j) ? std::cout<<1 : std::cout<<0;
        std::cout
<<' ';

} std::cout<<"\n";
}
int main()
{
   
float a=3.14;
   
double d=6.28;
    Bits(a);
    Bits(d);
   
return 0;
}

 

http://blog.csdn.net/rainharder/archive/2008/03/10/2164388.aspx

打印二进制的代码也不是那么容易的,不信写个看看,和下面这个(一本老外的C语言教材上的代码)比较一下,看看写的是否全面

//#define CHAR_BIT 8
 
void bit_print(int a)
{
       
int i;
        
int n = sizeof(int* CHAR_BIT;
        
int mask = 1 << (n - 1);
           
for(i = 1; i <= n; ++i)
      
{
               putchar(((a 
& mask) == 0? '0' : '1');
               a 
<<= 1;
              
if(i % CHAR_BIT == 0 && i < n)
                   putchar(
' ');
       }

}

 

c++就简单多了

cout << bitset<numberic_limits<unsigned int>::digits>(123)  << endl;
// 还可以把二进制字符串转换为整数
cout << bitset<100>(string("100010110")).to_ulong() << endl;


 发表于: 2008-05-31,修改于: 2008-05-31 18:24 已浏览291次,有评论1条 推荐 投诉

  网友评论
  本站网友 时间:2008-05-31 18:37:03 IP地址:125.77.105.★
limits和其他有用的模板

limits库描述了本地系统上的各种基础类型的特性,它通过模板类numberic_limits<>为所有的数值类型提供了相应的属性信息。在传统的C语言方法中,每一种数据类型的属性都由唯一的宏标识符表示,例如INT_MAX表示本地系统的最大int型值。而在模板类numeric_limits<>中则定义了一个静态函数max()用于返回相应的属性值,例如numeric_ limits<int>::max()返回本地系统的最大int型值。使用模板类可以大大减少用于描述本地系统的符号名的数量。

下面是一个使用numeric_limits<>函数的例子:

文件 limits.cpp

#include <iostream>

#include <limits>

using namespace std;

int main()

{

   cout << numeric_limits<char>::digits << " char\n ";

   cout << numeric_limits<unsigned char>::digits << " u char\n";

   cout << numeric_limits<wchar_t>::digits << " wchar_t\n";

   cout << numeric_limits<int>::max() << " max int\n";

   cout << numeric_limits<double>::max() << " max double " << endl;

}

digits域给出当前类型的位数。



  发表评论



Copyright © 2001-2006 ChinaUnix.net All Rights Reserved

感谢所有关心和支持过ChinaUnix的朋友们
页面生成时间:0.01663

京ICP证041476号