求解 使用php将1000位的十进制大数转成二进制
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求解 使用php将1000位的十进制大数转成二进制相关的知识,希望对你有一定的参考价值。
1212111111114141790830841027.............1242545234234897601换换成二进制输出二不溢出
下面的代码测试通过的,我只用几10位进行测试,理论上成千上万位结果也是正确的,供你参考,算法比较笨蛋(完全模仿人工的除2取余):
<?php//超大整数(10进制)转换为二进制数
$n=\'12121111111141417908308410289576890247569807456709384756890743906790486790845\';
//$n=\'15\';//1111
//$n=\'257\';//100000001
$r=\'\';//结果
while ($n)
//$n整除2,商$m、余数$k
$k=0;
$m=\'\';
do
$k=$k*10 + substr($n,0,1);
if ($m!=\'\' || $k>1) $m.=floor($k/2);
$k=$k % 2;
$n=substr($n,1);
//$r=$k . $r;
while($n!=\'\');
//echo "r=$r;m=$m\\n";//break;
//下一轮除法
$n=$m;
$r=$k . $r;
echo $r;
?> 参考技术A 意义是什么?你要做什么功能
二进制,八进制,十六进制,转成十进制
了解二进制转十进制之前,先了解一下一个字节多少位,O(∩_∩)O哈哈~
什么是位、字节、字、KB、MB呢?
1. 位 "位(bit)"是电子计算机中最小的数据单位。每一位的状态只能是0或1。
2. 字节 8个二进制位构成1个"字节(Byte)",它是存储空间的基本计量单位。1个字节可以储存1个英文字母或者半个汉字,换句话说,1个汉字占据2个字节的存储空间。
3. 字 "字"由若干个字节构成,字的位数叫做字长,不同档次的机器有不同的字长。例如一台8位机,它的1个字就等于1个字节,字长为8位。如果是一台16位机,那么,它的1个字就由2个字节构成,字长为16位。字是计算机进行数据处理和运算的单位。
4. KB 在一般的计量单位中,通常K表示1000。例如:1公里= 1000米,经常被写为1km;1公斤=1000克,写为1kg。同样K在二进制中也有类似的含义。只是这时K表示1024,也就是2的10次 方。1KB表示1K个Byte,也就是1024个字节。
5. MB 计量单位中的M(兆)是10的6次方,见到M自然想起要在该数值的后边续上六个0,即扩大一百万倍。在二进制中,MB也表示到了百万级的数量级,但1MB不正好等于1000000字节,而是1048576字节,即 1MB = 2E+20 Bytes = 1048576Bytes。
计算中一般二进制转十进制 需要补齐八位
二进制 : 00101010
二进制 转十进制
整数二进制转换为十进制:首先将二进制数补齐位数,首位如果是0就代表是正整数,如果首位是1则代表是负整数。
先看首位是0的正整数,补齐位数以后,将二进制中的位数分别将下边对应的值相乘,然后相加得到的就为十进制,比如1010转换为十进制
0 0 0 0 1 0 1 0
0*2^7 + 0*2^6 + 0*2^5 + 0*2^4 + 1*2^3 + 0*2^2 + 1*2^1 + 0*2^0
0+ 0+ 0+ 0 + 8+ 0+ 2 + 0 = 10
结果:10
十进制 转二进制
42为十进制数,除以2 取余数 为010101,然后取反101010 也即规范的写法为(42)(00101010)
八进制: 01234567
八进制 转十进制
72.45(八进制)
7*8^1 + 2*8^0 + 4*8^(-1) + 5*8^(-2)
56 + 2 + 0.5 + 0.078125
结果:58.578125(十进制结果)
十进制 转八进制
136(十进制数) (原理除以8取余数),然后取反,如下图:
结果:210(八进制数)
十六进制: 0123456789ABCEDF
A:代表10
B:代表11
C:代表12
D:代表13
E:代表14
F:代表15
十六进制 转十进制
2AF5(十六进制数)
2*16^3 + A*16^2 + F*16^1+ 5*16^0
8192+ 10*256 + 15*16 + 5 = 10997
结果: 10997(十进制数)
十进制 转十六进制(除以16取余数,然后取反原理都是类似的)
1610(十进制数)
1610/16 = 100 ……10(A)
100/16 = 6……4
6/16 = 0 ……6
结果:64A(十六进制数)
以上是关于求解 使用php将1000位的十进制大数转成二进制的主要内容,如果未能解决你的问题,请参考以下文章
C语言 数组类型转换,怎样将一个float类型的数组转换成字符(串)数组?
EXCEL2007中最多可以转10位二进制的数,我想把40位的二进制转成十进制的数,有啥办法?