1、二進位制轉換十進位制
原理:小數點前或者整數要從右到左用二進位制的每個數去乘以2的相應次方並遞增,小數點後則是從左往右乘以二的相應負次方並遞減。
例:10101.1011 =
1*20+0*21+1*22+0*23+1*24.1*2-1+0*2-2+1*2-3+1*2-4 = 1+0+4+0+16+0.5+0+0.125+0.0625 = 21.6875
abcd.efg = d*20
+c*21
+b*22
+a*23
+e*2-1
+f*2-2
+g*2-3
#**實現
1$number = "10101.1011";
2$i = 0;
3$sum = 0;
4$float = 0;
5$numberarr = explode(".",$number
);
6$len = strlen($numberarr['0']);
7$numbera = strrev($numberarr['0']); //
反轉字串 因為整數需要從右到左運算
8for($i;$i
<$len;$i++)
11if(strpos($number,"."))
17echo "浮點數:".($sum+$float
);
18 }else
;
2、十進位制轉換二進位制
原理:十進位制整數轉換為二進位制整數採用"除2取餘,逆序排列"法 整數部分除2有餘數得1 整除得0 以此類推最後調轉資料得出二進位制
十進位制小數轉換成二進位制小數採用"乘2取整,順序排列"法 小數部分乘2取整數得1取1 得0取0 然後小數部分再乘2 以此類推
例:21.6875 = 21/2 10/2 5/2 2/2 1/2 . 0.6875*2 0.375*2 0.75*2 0.5*2 = 10101.1011
整數字 21/2 = 10.5 有餘數 得 1 小數字 0.6875*2 = 1.375 取得整數字 1
10/2 = 5 整除得 0 0.375*2 = 0.75 取得整數字 0
5/2 = 2.5 有餘數 得 1 0.75*2 = 1.5 取得整數字 1
2/2 = 1 整除 得 0 0.5*2 = 1 取得整數字 1
1/2 = 0.5 有餘數 得 1
整數字為0 結束運算 得 10101 小數字為0 結束運算 得1011
拼接得
10101.1011
#**實現
1$number = "21.6875";
2$i = 1;
3$arrint = "";
4function
integer($number,$i,$arrint
)else
13if($decide
< 1)16}
17return
$arrint;18
}19function floating($float,$i,$arrint
)else
27if($decide >= 1)else32}
33return
$arrint;34
}35if(!strpos($number,"."))else
44echo
$result;
二進位制 十進位制 十六進製制互相轉換
今天看書講到十進位制 二進位制 十六進製制的互相轉換,自己試了下。十進位制和十六進製制互相轉換需要借助二進位製作為中間媒介。用到了stl標準庫的向量 佇列 字串。decimal2hex2decimal.cpp 定義控制台應用程式的入口點。include stdafx.h include includ...
十進位制與二進位制互相轉換指南
電腦科學概論最近在學這個。費了大概一星期的課餘時間來弄懂正負數 整數浮點 小數分數的互相轉換。寫出來,方便以後複習用。與十進位制的滿十進一一樣,二進位制是滿二進一的。所以用二進位制表示的數與十進位制存在如下關係 以8位為例 為了便於排版,用了豎排 1 128 27 1 64 26 1 32 25 1...
二進位制轉十進位制
二進位制轉十進位制方法很多,如字元陣列,指標法等 下面用字串函式的方法實現 二進位制轉十進位制 主要用 到 string函式性質及pow求乙個數的n次方的函式過載 by adengou 2010.08.04 win7 dev c 5.0 vs 2010 通過 include include incl...