[C/C++] 十进制数转二进制

编程入门 行业动态 更新时间:2024-10-09 02:24:46

[C/C++] <a href=https://www.elefans.com/category/jswz/34/1745942.html style=十进制数转二进制"/>

[C/C++] 十进制数转二进制

目录

  • 引言
  • 实现代码
  • 结果

引言

最近项目过程中,需要实现正负十进制数转二进制数(补码),原理这里就不展开讲了,网上有许多资料可以参考。本来是不想重复造轮子,但在现有的一些代码中,没有找到特别适合自己情况的方法。因此,我尝试自己实现一个这样的函数。

实现代码

主要的实现思路是用位的或(^)、与(&),注释写在代码里了。

#include "iostream"
#include "bitset"
using namespace std;
// 实际需要使用的是2字节的int,因此这里用short int作为形参
// 当然,形参用int类型也可以实现十进制转二进制,这里主要讲的是思路
void Dec2Bin(short int num) {if (num < 0) {//负数的要获得补码的情况要单独考虑num = abs(num);//取反,加1,得补码num = num ^ 0xffff;num = num + 1;}bitset<sizeof(num) * 8> n_bit(num);cout << "转换后的二进制为:" << n_bit << endl;/*如果需要将这两个字节的高低8位分别取出来操作的话,则可以用下面这段代码short int n_low = num & 0xff;short int n_high = (num >>8) & 0xff;bitset<sizeof(n_low) * 4> n_bit1(n_low);bitset<sizeof(n_high) * 4> n_bit2(n_high);cout << n_bit2<<endl<<n_bit1;*/
}int  main(int argc, char *argv[]){short int n;cout << "输入需要转换的十进制数:";cin >> n;Dec2Bin(n);system("pause");return 0;
}

结果

将运行的结果与计算器结果进行比较验证,如下:
正数:


负数:
负数计算器结果看似与程序结果不太一样,这是因为计算机是64位的,所以其自带的计算器也是64位的。实则两者结果是一致的。

更多推荐

[C/C++] 十进制数转二进制

本文发布于:2023-06-19 16:06:12,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/787935.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:十进制数

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!