您当前的位置: 首页 >  c++

Jave.Lin

暂无认证

  • 3浏览

    0关注

    704博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

C++ 将一个数值调整问上限的为某个POT的倍数值 - ROUND_UP_TO_POT_NUM

Jave.Lin 发布时间:2020-05-16 22:33:09 ,浏览量:3

今天偶然看到一篇:STL空间配置器–《STL源码剖析》读书笔记

讲的是 C++ 内存分配管理的,挺不错。

其中看到一个:ROUND_UP 函数,看到算法我能在脑海里想象到一部分数值的二进制的过程,但是还是用之前自己学习C++写的一个:BitSet 来查看数值计算过程,发现挺有趣的过程。

下面的 "BitSet.h" 就是上面提到的 BitSet

/* a.cpp - jave.lin */
#include 
#include "BitSet.h"

// 不成功的数值,因为不是POT
// #define __ALIGN 5

// 可成功的数值,因为是POT
// #define __ALIGN 2
// #define __ALIGN 8
#define __ALIGN 16
// #define __ALIGN 32

// 上调到8的倍数
static size_t ROUND_UP(size_t bytes) {
    return (((bytes) + __ALIGN-1) & (~(__ALIGN - 1)));
}

template
static std::string getBSStr(T value) {
    std::string ret;
    BS::__getStrFormat(value, ret);
    return ret;
}

int main() {
    
    std::cout             
关注
打赏
1664331872
查看更多评论
0.0424s