看板 PHP 關於我們 聯絡資訊
我目前有一個數值存放著狀態碼 是以二進位轉十進位的方法存放著 像這樣 0 => 0000 最初始 1 => 0001 狀態1 3 => 0011 狀態2 7 => 0111 狀態3 位元越高的優先權越高 我想用switch來判斷目前的狀態 除了把數值轉二進位,再算出第1個'1'的位置外 $bin = base_convert($num,10,2) $bin = sprintf("$08d",$bin) $pty = strpos($bin,'1') 還有沒有什麼比較快的方法可以直接算出他的運算值 像是 > 1 , > 2 , > 4 , > 8 然後用在switch上? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.39.162.30
Jerr:都要用 switch 了 有必要轉換嗎 06/25 14:05
Jerr:運算的話 intval(sqrt($num)) 就是出現1的最高位置 06/25 14:23
LPH66:intval(log($num,2)) 才是吧 @_@ 06/25 19:02
JoeHorn:不用那麼辛苦的轉換。別用 switch。http://0rz.tw/0nXYs 06/25 23:48
JYHuang:感謝...對於數學運算式的觀念實在是很薄弱 @.@ 06/26 04:06