[請益] 對一數值做判斷的用法

看板PHP作者 (夏天到了,冷不起來了說)時間15年前 (2010/06/25 11:53), 編輯推噓4(401)
留言5則, 4人參與, 最新討論串1/1
我目前有一個數值存放著狀態碼 是以二進位轉十進位的方法存放著 像這樣 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

06/25 14:05, , 1F
都要用 switch 了 有必要轉換嗎
06/25 14:05, 1F

06/25 14:23, , 2F
運算的話 intval(sqrt($num)) 就是出現1的最高位置
06/25 14:23, 2F

06/25 19:02, , 3F
intval(log($num,2)) 才是吧 @_@
06/25 19:02, 3F

06/25 23:48, , 4F
不用那麼辛苦的轉換。別用 switch。http://0rz.tw/0nXYs
06/25 23:48, 4F

06/26 04:06, , 5F
感謝...對於數學運算式的觀念實在是很薄弱 @.@
06/26 04:06, 5F
文章代碼(AID): #1C92XGLW (PHP)
文章代碼(AID): #1C92XGLW (PHP)