0%

原理

计算一个二进制数中 1 的出现次数其实很简单,只需要不断用 v & (v - 1) 移除掉最后一个 1 即可,原理可以参考这篇文章:2 的幂次方 ——《C/C++ 位运算黑科技 02》

上述方法是一个普通的思考方向,下面我会介绍另外一种思路:并行计数器,来计算二进制数中出现的 1

实际上,我们可以将这个数看作是全部由单位的计数器组成,1、0 就代表单个计数器的状态,我们只要合并相邻的计数器即可,这其实也是归并的思想。

阅读全文 »

非常坑,之前尝试过使用 yum 直接安装 trousers,会出现 TPM_E_NOAUTH 的问题,现在使用 trousers-0.3.15 进行编译后能够正常进行实验,目前还不清楚是什么包的问题导致的,因此要确保系统是全新的。

阅读全文 »

CMake 项目中 CMakelist.txt 应该怎么写,才能够实现跨平台编译?

这是我写的一个 CMake 项目的模板仓库:https://github.com/hominsu/cmake-project-layout/tree/main

包括了:

  • Linux 下项目的编译
  • Windows 下项目的编译
  • MacOS 下项目的编译
  • Windows 下 vcpkg 的使用,分别适配 Mingw 和 MSVC
  • 设定 MSVC 的 Runtime Library (主要解决导入的库使用的是 libcmt 导致与 MSVC 默认值冲突的问题,例如 openssl)

请不要将这个仓库作为一个真正的模版来使用,我希望的是你能从中学习到 CMake 的一些语法和技巧,以及一些工程、架构设计思想,然后自己尝试来写。

阅读全文 »

工程项目结构

API 设计

配置管理

包管理

测试

References