[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++] 十进制数转二进制相关推荐
- C++十进制数转换为二进制表示的算法(附完整源码)
C++十进制数转换为二进制表示的算法 C++十进制数转换为二进制表示的算法完整源码(定义,实现,main函数测试) C++十进制数转换为二进制表示的算法完整源码(定义,实现,main函数测试) #in ...
- 语言栈十进制转十六进制_十进制数转二进制、八进制、十六进制等任意进制_C语言「抄作业」...
C语言「抄作业」系列之十进制数转二进制.八进制.十六进制等任意进制 PS: 写这篇时发现了潜藏多年的Bug.在修复时,无意间发现,本大仙当年的Bug代码竟然「流传甚广」--(别以为改了下变量名,就能骗 ...
- Java中实现十进制数转换为二进制的几种办法
Java中实现十进制数转换为二进制 第一种:除基倒取余法 这是最符合我们平时的数学逻辑思维的,即输入一个十进制数n,每次用n除以2,把余数记下来,再用商去除以2...依次循环,直到商为0结束,把余数倒 ...
- Java中实现十进制数转换为二进制
Java中实现十进制数转换为二进制 第一种:除基倒取余法 这是最符合我们平时的数学逻辑思维的,即输入一个十进制数n,每次用n除以2,把余数记下来,再用商去除以2-依次循环,直到商为0结束,把余数倒着依 ...
- Python实现十进制数与二进制补码转换
Python实现十进制数与二进制补码转换 二进制补码(BNR) 正数 正整数的补码是其二进制表示,与原码相同. 例:+9的补码是00001001.(备注:这个+9的补码是用8位2进制来表示的,补码表示 ...
- 利用栈实现把十进制数转换为二进制至十六进制之间的任一进制数并输出的功能。(第二版)
[实验题目内容] 保持计算机默认的十进制不变(要求不用C++流操纵符转换基数为八进制形式oct,不用C++流操纵符转换基数为十六进制形式hex,也不用setbase(base)函数将基数设置为base ...
- 利用栈实现把十进制数转换为二进制至十六进制之间的任一进制数并输出的功能。
利用栈实现把十进制数转换为二进制至十六进制之间的任一进制数并输出的功能. [实验题目内容] [实验环境](使用的软件):VS - 2010 [项目设计源代码] [项目测试运行结果截图] [实验题目内容 ...
- Python | 不使用库函数将十进制数转换为二进制
Given a decimal number and we have to convert it into binary without using library function. 给定一个十进制 ...
- 栈的应用--数制转换(十进制数转换为二进制,八进制,十六进制)
#include<stdio.h> #include<stdlib.h> #define MAXSIZE 1024 typedef int ElemType;typedef s ...
最新文章
- oracle判断值是否为0的高数,SQLServer和Oracle的常用函数对比
- 【c语言】蓝桥杯算法训练 整数平均值
- Android Studio 快捷键使用说明
- 第六十七篇、OC_UITableView head下拉图片放大的效果
- C++string详解
- full GC排查案例
- linux组成,Linux学习笔记之Linux组成及初识
- 读取数据库并写入excel表中 发送邮件
- vue实现上移下移_vue.js实现组件间的上移下移
- bp神经网络预测未来数据,bp神经网络如何预测
- java加锁_JAVA最好的加锁方法是什么
- 案例分享 | 可编程机器人Scratch二次开发案例
- 做好目标管理和任务管理,提高办公协同效率
- 中南大学官网计算机学院,中南大学
- 电脑换硬盘要重装系统吗
- 使用c#建立奥运奖牌榜
- 微信小程序 非webview分享给好友及生成分享海报
- NFS服务配置与mount nfs时-o nolock的问题
- BUU刷题记录——5
- Conclusion for Inheritance and Object Oriented Design
热门文章
- MonkeyPatchWarning: Monkey-patching ssl after ssl has already been imported may lead to errors
- C语言 | 【耗费一夜总结三本C语言系列】之 结构体、联合、枚举
- pytorch transforms图像增强
- 基于STL的演讲比赛流程管理系统
- oracle sqlplus建用户,Oracle用SQL Plus创建数据库表空间和用户
- 怎么放大图片像素不模糊?
- 《冲动的惩罚》歌词分析
- excel宏计算机,excel宏教程_电脑基础知识_IT计算机_专业资料.doc
- 安徽大学计算机学院张兴义教授,“2018年CCF合肥为新研究生导航” 开启复合型人才培养之路...
- Mott-insulator transitions in BEC