十进制转二进制PHP算法

[ 十进制转二进制 ]

 1 function test($var){
 2
 3         $func = function($i){
 4                 if($i < 2){
 5                         return $i;
 6                 }
 7
 8                 $return[‘int‘] = intval( $i / 2 );
 9                 $return[‘remain‘] = $i % 2;
10
11                 return $return;
12         };
13
14         $arr = array();
15
16         while($var > 1){
17                 $result = $func($var);
18
19                 $var = $result[‘int‘];
20                 array_unshift($arr,$result[‘remain‘]);
21         }
22
23         $var && array_unshift($arr,$var);
24
25         return implode(‘‘,$arr);
26 }
27
28 $int = 778988;
29
30 echo test($int)."\r\n";

[ 二进制转十进制 ]

 1 $str = ‘10111110001011101100‘;
 2
 3 function test($var){
 4         $len = strlen($var);
 5
 6         $return = 0;
 7
 8         for($pos=0;$pos<$len;$pos++){
 9
10                 $key = $pos == 0 ? 1 : $key * 2;
11
12                 $int = intval(substr($var,$ken-$pos-1,1));
13
14                 $int >0 && $return += $key;
15
16         }
17
18         return $return;
19 }
20
21 echo test($str)."\r\n";
时间: 2024-07-31 16:47:59

十进制转二进制PHP算法的相关文章

十进制转二进制-快速算法

#include<iostream> #include<string> #include<algorithm> using namespace std; int main(int agrc, char *agrv[]) { int iInPut = 0; while (cin >> iInPut) { string sBinary;//转换后的二进制存储为字符串,调用了默认构造函数初试化为空串 int temp = abs(iInPut); if (temp

Formiko总结整数十进制转换二进制原理

引子: 为什么十进制转二进制的“辗转相除记录余数倒序输出”的算法是正确的?这个问题陪伴了Formiko半年. 实践: 实践一:把十进制数100转换成二进制数的图   上图和和下图唯一的区别在最后一位上,只是除到0和除到1的区别,但在算法本身的理解上应该不会有本质的区别. 实践二: 十进制数100或许太大,不便于一目了然的验证.试一试十进制数1,2,3. 思考: 以上算法的思路是“对原数反复进行除法得到余数,最后将余数倒序输出”.但是看到如图对十进制数100,1,2,3的操作,都看不出原思路的由来

十进制转二进制

十进制转二进制的递归实现算法: 1 #include <stdio.h> 2 void dectobi(int a); 3 4 int main() 5 { 6 int i; 7 printf("please input a decimical number\n"); 8 scanf("%d",&i); 9 printf("the binary number is:"); 10 dectobi(i); 11 return 0;

十进制与二进制转换

用C#代码实现二进制与十进制的互相转换 代码如下: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78

计算机中十进制转二进制的相关技巧

**关于计算机中十进制转二进制的相关技巧** 下面我们用二种方法进行对比: 1. 十进制整数转换为二进制整数 十进制整数转换为二进制整数采用"除2取余,逆序排列"法.具体做法是:用2整除十进制整数,可以得到一个商和余数:再用2去除商,又会得到一个商和余数,如此进行,直到商为0时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来. 如: 789=1100010101(二进制) 789/2=394 余1 第10位 394/2=197 余0

帮助你快速懂得心算十进制转二进制。(自创功法,理解就会,不会你砍我)

目录: 1.熟记二进制几个特殊数字. 2.找到二进制的转换规律. 3.转二进制的规则理解. 4.举例消化,一举例你就明白了. ~~---------------------------------------------------------------------------------------------------------------------------------------- 前言:前面看不懂,可以先看举例. -------------------------------

三行代码写十进制转二进制

同学c++补考,找我帮忙写十进制转二进制的代码,为了让这同学能记住,所以就想写的简单些,然后没想到居然能这么简单,感觉还不错.直接上代码: void DtoB(int d) { if(d/2) DtoB(d/2); cout<<d%2; } 考虑到有人很懒,喜欢复制就能用的代码,所以下面贴一个带主函数的完整代码好了: #include<iostream> using namespace std; void DtoB(int d) { if(d/2) DtoB(d/2); cout&

十进制转换为二进制序列,并输出1的个数,和序列的奇偶序列

★十进制转换为二进制序列,并输出1的个数,和序列的奇偶序列 #include<stdio.h> int main() { int m,i,x,y; char a[32];//int为4个字节长,占32个bit位 int count=0; printf("请输入一个数:\n"); scanf("%d", &m); for (i = 0; i < 32; i++) { if (m%2 == 1)         //统计序列中1的个数 { co

C语言 十进制转换二进制

十进制转换二进制主要采用的是连除倒取余的方法  代码如下 int num = 8; int tempArr[32]={0}; int i = 0; while (num / 2 != 1 ) { tempArr[i] = num % 2; num /=2; i++; } tempArr[i+1] = 1; for (int j = sizeof(tempArr)/sizeof(int)-1; j>=0; j--) { printf("%d", tempArr[j]); }