把乙個範圍的數對映到另乙個範圍

2021-10-09 14:49:17 字數 1101 閱讀 6869

如何將乙個範圍的數對映到另乙個範圍,這是乙個很簡單的問題。

但是有時候8位微控制器對乘除法支援不是很好,會出現溢位,這樣你就不能很好地得到你想要的數。

這裡我提供乙個簡單的演算法,可以對整型進行誤差較小的對映。

/************************************

*目的:將200 - 1023 中的某個數對映到 20 - 160 上

*原範圍:200 - 1023

*目標範圍:20 - 160

*大數到小數的對映會出現精度的損失,所以先將小數的範圍擴大,

*這裡採用的是左移n位,(也可以使用乘n來擴大範圍)

*擴大後必須使目標範圍至少大於原範圍

***********************************/

typedef unsigned int typeoriginal;

typedef unsigned int typetarget;

#define original_data_max 1023

#define original_data_min 200

#define target_data_max 160

#define target_data_min 20

#define left_shift_n 3

typetarget map(typeoriginal dat)

if(target <= original_data_min)

target -= original_data_min;

start = 0;

end = original_data_max-original_data_min;

start1 = 0;

end1= target_data_max-target_data_min;

end1 <<= left_shift_n;

while((start != end) && (start+1 < end))

else

} start1>>=left_shift_n;

return start1+target_data_min;

}

另乙個自己

人們常說 人貴有自知之明 可是話說回來,又有幾人能真正的了解自己呢?我覺得我就是乙個很沒有自知之明的人。生於89年的我,到了今年的生日就28周歲了。都說三十而立,正所謂成家立業,可以回過頭發現自己可以稱得上 一無是處,一無所有 曾幾何時,還是鄰居家叔叔阿姨教育孩子的榜樣 曾幾何時父母因為自己考個好大...

把資料夾對映到另乙個磁碟的資料夾(軟鏈結)

環境要求 使用方式 將junction.exe,直接扔到c windows system32 命令操作 1.建立軟鏈結 junction s 鏈結路徑 源路徑 前提是源路徑已經存在 2.刪除 junction d 鏈結路徑 使用window鍵 r,執行cmd,調出命令列介面 輸入 junction ...

乙個Ejb呼叫另乙個Ejb

乙個ejb呼叫另乙個ejb有兩種方法 第一是同個jndi 查詢 initialcontext ctx new initialcontext ihelloword helloworld ihelloword ctx.lookup helloworld remote 第二種 通過依賴注入 1 ejb i...