设为首页 加入收藏

TOP

4.12.1 BOOST_BINARY
2013-10-07 15:01:51 来源: 作者: 【 】 浏览:83
Tags:4.12.1 BOOST_BINARY

4.12.1  BOOST_BINARY

BOOST_BINARY提供一组宏,用于实现简单的二进制常量表示。

BOOST_BINARY的定义位于<boost/utility/binary.hpp>中,也可以通过<boost/ utility.hpp>间接包含,即:

  1. #include <boost/utility/binary.hpp>     //或者  
  2. #include <boost/utility.hpp> 

它使用boost.preprocessor预处理元编程(www.cppentry.com)工具将一组或多组01数字在编译期展开成为一个八进制数字。每个数字组之间可以用空格分隔,每组可以容纳1个到8个0/1数字。

这里特别要注意的是,数字组的长度一定不能超过八个,由于预处理器宏展开的限制,嵌套层次太深会导致无法通过编译,报出一大堆错误。

示范BOOST_BINARY用法的例子如下:

  1. #include <boost/utility.hpp> 
  2. ...  
  3. cout << hex << showbase;  
  4. cout <<  BOOST_BINARY(0110) << endl;  
  5. cout <<  BOOST_BINARY(0110 1101) << endl;  
  6. cout <<  BOOST_BINARY(10110110 01) << endl;  
  7. cout <<  bitset<5>(BOOST_BINARY(0110)) << endl;  

运行输出结果如下:
  1. 0x6  
  2. 0x6d  
  3. 0x2d9  
  4. 00110  

除了最基本最通用的BOOST_BINARY宏之外,本组件还包含形如BOOST_BINARY_XXX的宏,其中的XXX是标准的整数后缀,如U(unsigned int)、UL(unsigned long)等,用以支持需要特定整数类型的地方。例如,如果编译器支持long long(64位整数),则对应的宏是BOOST_BINARY_LL。

示范这些宏用法的代码如下:

  1. cout <<  BOOST_BINARY_UL(101 1001) << endl;  
  2. long long x = BOOST_BINARY_LL(1101);  
  3. cout << x << endl;  

BOOST_BINARY宏提供了很好的初始化操作方法,在某些需要按位操作的情况下特别有用,比如使用std::bitset 。而且BOOST_BINARY宏都是在编译期展开的,没有任何运行时开销。

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇4.12.2 BOOST_CURRENT_FUNCTION 下一篇4.12 utility

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: