教程
Python 3 Basic
Python Advanced
Tkinter
Python Modules
JavaScript
Python Numpy
Git
Matplotlib
PyQt5
Data Structure
Algorithm
贴士文章
Rust
Python Pygame
Python
Python Tkinter
Batch
PowerShell
Python Pandas
Numpy
Python Flask
Django
Matplotlib
Plotly
Docker
Seaborn
Matlab
Linux
Git
C
Cpp
HTML
JavaScript
jQuery
TypeScript
Angular
React
CSS
PHP
Java
Go
Node.js
Kotlin
Csharp
Ruby
Arduino
MongoDB
MySQL
Postgres
R
VBA
Scala
Raspberry Pi
函数参考
Python Pandas
Numpy
本文将介绍几种在 C++ 中如何将十进制数转换为二进制表示的方法。
在 C++ 中使用自定义定义的函数将十进制数转换为二进制数
灵活的方法定义了一个函数,该函数接收
int
值,将其转换为相应的二进制表示,并将其作为一个字符串值返回。在这种情况下,我们使用
%
取余运算符和
while
循环来实现该算法,其中我们每次迭代都将整数的值减少一半。
#include <iostream>
using std::cout;
using std::endl;
using std::string;
string toBinary(int n)
string r;
while (n != 0){
r += ( n % 2 == 0 ? "0" : "1" );
n /= 2;
return r;
int main() {
int number = 15;
cout << "decimal: " << number << endl;
cout << "binary : " << toBinary(number) << endl;
return EXIT_SUCCESS;
decimal: 15
binary : 1111
使用 std::bitset 类在 C++ 中把十进制数转换为二进制数
另外,我们也可以直接使用 STL 库中的 bitset 类。bitset 表示一个固定大小的 N 位序列,它提供了多种内置方法来有效地操作二进制数据。下面的例子显示了通过传递 string 值和 int 值来构建 bitset 对象。
#include <iostream>
#include <bitset>
using std::cout; using std::endl;
using std::string; using std::bitset;
string toBinary(int n)
string r;
while (n != 0){
r += ( n % 2 == 0 ? "0" : "1" );
n /= 2;
return r;
int main() {
int number = 15;
bitset<32> bs1(toBinary(number));
cout << "binary: " << bs1 << endl;
bitset<32> bs2(number);
cout << "binary: " << bs2 << endl;
return EXIT_SUCCESS;
binary: 00000000000000000000000000001111
binary: 00000000000000000000000000001111
请注意,在前面的代码中,我们在 bitset 声明中指定了 32 位的分配。大家可以指定不同的位数,以更好地满足自己的需求。下面的代码段中演示了多种方案。
#include <iostream>
#include <bitset>
using std::cout; using std::endl;
using std::string; using std::bitset;
int main() {
int number = 15;
bitset<32> bs1(number);
cout << "binary: " << bs1 << endl;
bitset<16> bs2(number);
cout << "binary: " << bs2 << endl;
bitset<8> bs3(number);
cout << "binary: " << bs3 << endl;
bitset<5> bs4(number);
cout << "binary: " << bs4 << endl;
cout << endl;
return EXIT_SUCCESS;
binary: 00000000000000000000000000001111
binary: 0000000000001111
binary: 00001111
binary: 01111
bitset 类有几个有用的方法对其内容进行操作。这些方法可以用来反转集合的所有位(flip 函数)或 reset/set 序列中指定的位。还支持核心的二进制运算,如 AND、OR、XOR、NOT 和 SHIFT。我们在下面的例子中展示了其中的几个,但你可以看到 bitset 类的完整手册这里。
#include <iostream>
#include <bitset>
using std::cout; using std::endl;
using std::string; using std::bitset;
int main() {
int number = 15;
bitset<32> bs(number);
cout << "binary : " << bs << endl;
cout << "flipped: " << bs.flip() << endl;
cout << "shift>4: " << (bs>>=6) << endl;
cout << "shift<5: " << (bs<<2) << endl;
cout << "reset : " << bs.reset() << endl;
cout << "set : " << bs.set(16) << endl;
return EXIT_SUCCESS;
binary : 00000000000000000000000000001111
flipped: 11111111111111111111111111110000
shift>4: 00000011111111111111111111111111
shift<5: 00001111111111111111111111111100
reset : 00000000000000000000000000000000
set : 00000000000000010000000000000000
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn