尝试一下用这个方法输出二进制

  1. char* ToBinary(int src)
  2. {
  3.     //By Rock
  4.     //2008-09-29
  5.     #define BitDig(n) (int)(log((double)n)/log(2.0))
  6.     static char des[]="00000000000000000000000000000000";
  7.     int tmp=src,sto=src,index=0,highest=BitDig(src);
  8.     while(index<highest)
  9.     {
  10.         tmp=sto&-sto;
  11.         sto-=tmp;
  12.         index=BitDig(tmp);
  13.         *(des+0x1F-index)='1';
  14.     }
  15.     return des;
  16. }

 

传入int型参数接收一个字符指针就可以得到二进制输出了。

灵感来自于Hacker‘s Delight。

### 如何在C++中输出数字的二进制表示 在C++中,可以利用标准库中的`<bitset>`模板类实现将整数转换为其对应的二进制表示形式。以下是具体的方法说明以及代码示例。 #### 使用 `<bitset>` 实现二进制输出 `std::bitset` 是 C++ 标准库提供的一种固定大小的位集合容器,能够方便地处理二进制数据并将其作为字符串输出。通过指定 `bitset` 的长度参数,可以选择输出完整的二进制位宽或者截断后的部分[^5]。 下面是一个简单的例子展示如何使用 `bitset` 来打印一个整数的二进制形式: ```cpp #include <iostream> #include <bitset> using namespace std; int main() { int x = 38 ^ 40; // 输出完整32位的二进制表示 (假设 int 类型占用 4 字节) cout << "Full binary representation of x: " << bitset<sizeof(x) * 8>(x) << endl; // 截取前8位进行显示 cout << "Truncated to 8 bits: " << bitset<8>(x) << endl; return 0; } ``` 上述程序会先计算变量 `x` 值为 `(38 XOR 40)` 后的结果,并分别以全部32位和仅限于低阶8位的形式展现其二进制串。 #### 自定义函数完成十进制到二进制的手动转换 除了依赖内置工具外,还可以编写自定义逻辑来执行同样的任务。这种方法通常涉及反复除法操作配合余数收集过程直到商降为零为止;最后再逆序排列所得数组即得目标数值之二进表达方式[^4]。 这里给出一段示范性的递归版本实现: ```cpp #include <iostream> #include <vector> #include <algorithm> using namespace std; void decToBin(int n){ if(n / 2 != 0){ decToBin(n/2); } cout<<n%2; } int main(){ int num=17; decToBin(num); return 0; } ``` 此段脚本接受用户输入的一个正整数(此处硬编码设定了17),并通过不断调用自身直至满足终止条件时逐层返回各阶段模运算结果从而拼接成最终答案。 #### 注意事项 当尝试读写纯二进制文件而非文本模式下操作时需特别留意打开流的方式应设置为binary标志以防操作系统自动修改换行符等特殊字符的行为影响实际存储内容的一致性[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值