看板 Visual_Basic 關於我們 聯絡資訊
※ 引述《sanlinchang (<---剩男)》之銘言: : arry[i]/2 |= arry[i]-48 << 4 : arry(i)\2 = (arry(i) or ((arry(i)-48)+16)) ^ 應該是乘16 VB6有錯誤處理機制,可以on error goto 指定的程式段落. 左移運算可以這樣子做: environ.bas --------------------------- Option Explicit Public Function ShiftL(Num As Long) As Long On Error GoTo handle_overflow ShiftL = Num * 2 '絕大部分只要一個乘二即可,如果嫌乘法慢,可以寫Num+Num. Exit Function handle_overflow: HandleOverflow Num End Function 'HandleOverflow Num 時,知道Num一定是二進位值為1xxxxxxxxx...x, '這時候要看你要實作算術左移或是普通左移,或者是循環左移. '以下做普通左移: Private Function HandleOverflow(Num as Long) As Long Dim bit_len As Integer Dim temp As Long Dim mask as Long temp = Num bit_len = 0 While temp <> 1 temp = temp \ 2 bit_len = bit_len + 1 Wend '我需要&H7FFFF...F將Num含第二位元之後的值取出. mask = CLng("&H7" & String((bit_len-3)/4, "F")) HandleOverflow = (Num And mask) * 2 End Function -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.231.70.95
chinoyan:真奇怪,為什麼大家都懂原po的問題,他有沒寫問題 02/05 20:55
chinoyan:可以請教一下,為什麼大家都知道完整問題是什麼? 02/05 20:56
yauhh:你是不是沒有使用C寫過要用到<<的程式? 02/05 21:21
yauhh:位元左移運算這個東西,在資訊工程領域是常識,所以一講就知道 02/05 21:24
chinoyan:沒有 >"< 02/05 22:02
sanlinchang:謝謝chinoyan大大的教學,小弟受益良多 02/07 00:15