看板 b94902HW 關於我們 聯絡資訊
※ 引述《ericsk (認真的艾瑞克)》之銘言: : http://www.csie.ntu.edu.tw/~r93066/C2005/C2005_20051214.pdf 關於昨天有同學問到, 如果 shift 的 bits 超過 8 那, 圖例就沒用了怎麼辦.. 其實可以把圖例再推廣一下 data[0] data[1] data[2] data[3] 01010011 11001010 00111100 11110011 假如今天要 shift right 13 那對 data[2] 而言, 它的"新值"會是黃色的部份 然後你有發現到一個很重很重的重點嗎? 不管 shift 幾個 bit, 對於任意一個 byte (data[]) 而言, 它的新值會來自於 某兩個byte 或 某一個byte(剛好是八的倍數時) (建議大家思考一下 為.什.麼 <-- homework) 所以我們就可以根據要 shift 的個數來推算出是在哪個 byte 上 ceil(13 / 8) = 2, 所以知道是在 data[2-2] == data[0] 13 % 8 = 5, 所以知道是在 data[0] 的第 8-5 == 3 個 bit 上 同時也知道要從 data[0+1] == data[1] 拿 3 個 bit 這樣不就很簡單了嗎? ^^ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.30.82