C#实现10进制转2进制
这几天在复习计算机原理,看到二进制忽然想到二进制转10进制的公式,然后转念一想10进制转二进制的公式好像没印象,那索性自己写出来。
结果学渣的我发现,并不能写出来!什么数列,对数,xx函数忘得一干二净,而且需要有需要判断的地方,于是崩溃了,以前代数题并没写过条件啊~
索性用C#代码搞出来(虽然在C#里有方法直接转换)
| 二进制值 | 10进制值 | 公式 |
|---|---|---|
| 0 | 0 | 0 |
| 1 | 1 | 1 |
| 10 | 2 | f(2)=10^1 =10 |
| 11 | 3 | f(3):比 log₂3最小的整数位1,记录10^1,并3-(2^1)=1,f(1)=1,则最终结果为10^1+f(1)=10+1=11 |
| 100 | 4 | f(4): log₂4=2,整数,直接返回10^2 |
| 101 | 5 | f(5):比 log₂5最小的整数位2,记录10^2,并5-(2^2)=1,f(1)=1,则最终结果为10^2+f(1)=100+1=101 |
| 110 | 6 | f(6):比 log₂6最小的整数位2,记录10^2,并6-(2^2)=2,f(2)=10,则最终结果为10^2+f(2)=100+10=110 |
| 111 | 7 | ……………… |
| 1000 | 8 | ……………… |
| 1001 | 9 | ……………… |
| 1010 | 10 | ……………… |
| 1011 | 11 | ……………… |
| 1100 | 12 | ……………… |
| 1101 | 13 | ……………… |
| 1110 | 14 | ……………… |
| 1111 | 15 | f(15):比 log₂15最小的整数位3,记录10^3,并15-(2^3)=7,f(7)=111,则最终结果为10^3+f(7)=1000+111=1111 |
| 10000 | 16 | f(16):比 log₂6最小的整数位4,整数,直接返回10^4 |
公式是这样子的。 假如求10进制数n的二进制,先求以2为底的n的对数log₂N,判断log₂N是否为为整数,如果为整数直接返回10^log₂N,否则求出比log₂N最小的整数t(如1.001取1,2.02取2,3.9取3)。求出并记录10^t,然后将n减去2^t并重复执行以上步骤,返回的值与记录的10^t相加。
以上我们设这个函数为f(n);
贴代码,无疑,用了递归~
private double DecimalToBinarySystem(int decimalNumber)
{
double standard = ;
if (decimalNumber==)
{
return ;
}
if (decimalNumber==)
{
return ;
}
var doubleValue = (double) decimalNumber;
var logarithm = Math.Log(doubleValue, );
var logFormat = Math.Truncate(logarithm);
var baseNum = Math.Pow(, logFormat);
if (logarithm.Equals(logFormat))
{
return baseNum;
} var leftNumber = doubleValue - Math.Pow(, logFormat);
return baseNum + DecimalToBinarySystem((int)leftNumber); }
仅测试过大于等于0的整数,负数和小数未测试。
只是乐于思考一下,抛砖引玉欢迎指正
C#实现10进制转2进制的更多相关文章
- C++ 中 int 转string, 以及10进制转2进制
感谢:http://blog.csdn.net/xiaofei2010/article/details/7434737 以及:http://www.cnblogs.com/nzbbody/p/3504 ...
- js用8421码实现10进制转2进制
今天早上突然心血来潮决定用 ''和js来撸一个进制转换.(纯属心血来潮,有兴趣的可以看看.) 我们知道,通过8421码.可以快速的得到一个10进制的2进制.如下图: 如上图所示:我们将10进制的 '1 ...
- python中2进制、10进制、16进制等之间的转换
10转2: bin(8) # '0b1000' 2转10: int( 10转16: hex(15) # '0xf' 16转10: int( 2进制和16进制中间通过转10进制可以相互转换 from b ...
- javascript 10进制和64进制的转换
原文:javascript 10进制和64进制的转换 function string10to64(number) { var chars = '0123456789abcdefghigklmnopqr ...
- c# 关于10进制和16进制转换以及显示
直接举例说明: int i = 15;//一个10进制数 string txt = Convert.ToString(i,16);//将上面10进制以16进制形式显示为f string s = &qu ...
- python3 第十九章 - 写一个10进制转任意进制的函数
我们先回忆下之前所学的进制转换的知识(详见:第十章),10进制转其它进制的方法是: 整数部分,除基取余,逆序排列 小数部分,乘基取整,顺序排列 负数,按绝对值处理 好,假设我们需要转化的数都是正整数, ...
- 10进制 VS 2进制
10进制 VS 2进制 时间限制: 1 Sec 内存限制: 32 MB 题目描述 样例输出 623 #include<stdio.h> #include<string.h> ...
- 题目1208:10进制 VS 2进制(进制转换以及大数保存问题)
题目链接:http://ac.jobdu.com/problem.php?pid=1208 详细链接:https://github.com/zpfbuaa/JobduInCPlusPlus 参考代码: ...
- 【九度OJ】题目1208:10进制 VS 2进制 解题报告
[九度OJ]题目1208:10进制 VS 2进制 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1208 题目描述: 对于一 ...
- golang中字符串、数值、2进制、8进制、16进制、10进制、日期和字符串之间的转换
package main import ( "fmt" "reflect" "strconv" "time" ) fun ...
随机推荐
- Docker跨主机网络实践
Docker使用中网络管理是最麻烦的,在项目初始化前期就需要进行合理的规划,如果在比较理想的单主机的网络通信是比较简单的,但如果涉及到跨主机的网络就需要使用docker自带的overlay netwo ...
- 终端复用器tmux基础使用
简介对于经常操作Linux系统的同学来说,远程连接Linux服务器使用最多的工具是SecureCRT或者Xshell,而将此时的环境称为终端环境.Tmux是两个单词的缩写,即“Terminal Mul ...
- iostream
cout 星号*为默认 控制符 描 述 控制符 描 述 *dec 以十进制形式输出整数 hex 以十六进制形式输出整数 oct 以八进制形式输出整数 fixed 以普通小数形式输出浮点数 scient ...
- Sping POJO中如何添加验证规则和验证消息提示
1.示例,验证规则和错误提示作为注解写在声明变量的地方 @NotNull private long id; @NotNull @Size(min = 2, max = 30,message=" ...
- (二十四)JDBC应用的事务管理(转账事例)
目录 利用 Dbutils 进行事务操作(以转账为例) 转账实现方式(不优雅的方式) ThreadLocal 类 转账实现方式(优雅的方式) 利用 Dbutils 进行事务操作(以转账为例) 我们只在 ...
- C++ Primer练习题day1
/* 练习1.1略 练习1.2.改写程序,让他返回-1. 练习1.3.编写程序,在标准的输出上打印Hello,World. */ #include<iostream> int main() ...
- 剑指offer24:二叉树中和为输入整数值的所有路径。(注意: 在返回值的list中,数组长度大的数组靠前)
1 题目描述 输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径.(注意: 在返回值的list中,数组长 ...
- Linux 安装MySQL流程
1. yum -y install wegt 2. yum -y install vim 3. 下载MySQL的repo源 1. wget http://repo.mysql.com/mysql-co ...
- Python学习3——列表和元组
一.通用序列操作——索引.切片.相加.相乘.成员资格检查 1.索引,正序从0开始为第一个元素,逆序从-1开始,-1为最后一个元素 >>> greeting[0] 'h' >&g ...
- 用shell脚本安装MySQL-5.7.22-Percona版本
#!/bin/bash MySQL_Package=Percona-Server-5.7.22-22-Linux.x86_64.ssl101.tar.gz Package_Source=Percona ...