民國114年 第3梯次 數位電子甲級 學科
第62題
Arduino map 函式:unsigned long map(unsigned long x, unsigned long i, unsigned long…
題目
Arduino map 函式:unsigned long map(unsigned long x, unsigned long i, unsigned long j, unsigned long y, unsigned long z),下列敘述何者正確?
- (1) return (x - i) * (z - y) / (j - i) + y;
- (2) i 為映射前區間最小值,j 為映射前區間最大值
- (3) return (x - y) * (j - i) /(z - y) + i;
- (4) i 為映射後區間最小值,j 為映射後區間最大值
官方答案
(1) return (x - i) * (z - y) / (j - i) + y;、(2) i 為映射前區間最小值,j 為映射前區間最大值
解析
Arduino map() 函式將數值 x 從輸入區間 [i, j] 線性映射至輸出區間 [y, z],其實作為 return (x - i) * (z - y) / (j - i) + y;(選項1正確,整數運算會無條件捨去小數)。其中 i 為映射前(輸入)區間最小值 in_min,j 為映射前區間最大值 in_max(選項2正確);y 為映射後最小值 out_min,z 為映射後最大值 out_max。選項3公式錯誤,且選項4把 i、j 說成映射後區間,與函式定義相反,故皆不正確。
AI 參考解析(推得答案已與官方答案比對一致),非官方公告內容,僅供備考參考。