在單片機(jī)程序中,負(fù)數(shù)使用補(bǔ)碼表示法:- 最左側(cè)比特位為符號(hào)位(0表示正數(shù),1表示負(fù)數(shù))。- 剩余比特位表示絕對(duì)值。- 要表示負(fù)數(shù),需將絕對(duì)值二進(jìn)制化、取反,再添加符號(hào)位1。負(fù)數(shù)運(yùn)算需考慮符號(hào)位,如加法時(shí)符號(hào)位相同時(shí)按正數(shù)加法,否則按補(bǔ)碼減法。
單片機(jī)程序中負(fù)數(shù)表示
在單片機(jī)程序中,負(fù)數(shù)通常使用補(bǔ)碼表示法。補(bǔ)碼表示法是一種將正數(shù)和負(fù)數(shù)都統(tǒng)一表示為非負(fù)數(shù)的方法。
補(bǔ)碼表示法
在補(bǔ)碼表示法中,最左側(cè)的比特位表示符號(hào)位,0表示正數(shù),1表示負(fù)數(shù)。其余比特位表示數(shù)字的絕對(duì)值。對(duì)于 8 位單片機(jī),補(bǔ)碼表示法的范圍如下:
- 正數(shù):0000 0000 ~ 0111 1111(0 ~ 127)
- 負(fù)數(shù):1000 0000 ~ 1111 1111(-128 ~ -1)
負(fù)數(shù)的表示
要表示一個(gè)負(fù)數(shù),需要執(zhí)行以下步驟:
- 將數(shù)字的絕對(duì)值轉(zhuǎn)換成二進(jìn)制。
- 對(duì)二進(jìn)制結(jié)果取反(將 0 變?yōu)?1,將 1 變?yōu)?0)。
- 在最左側(cè)添加一個(gè)符號(hào)位 1。
例如:
要表示 -5,使用補(bǔ)碼表示法:
- 絕對(duì)值 5 的二進(jìn)制表示:0000 0101
- 取反:1111 1010
- 添加符號(hào)位 1:1111 1010
因此,-5 在補(bǔ)碼表示法中表示為 1111 1010。
負(fù)數(shù)的運(yùn)算
在單片機(jī)程序中,負(fù)數(shù)的運(yùn)算與正數(shù)類(lèi)似,但需要考慮符號(hào)位。
- 加法:符號(hào)位相同時(shí),按照正數(shù)加法規(guī)則執(zhí)行。符號(hào)位不同時(shí),將數(shù)字轉(zhuǎn)換成補(bǔ)碼,執(zhí)行補(bǔ)碼減法,結(jié)果再轉(zhuǎn)換成原碼。
- 減法:轉(zhuǎn)換成補(bǔ)碼加法執(zhí)行。
- 乘法:按照正數(shù)乘法規(guī)則執(zhí)行,結(jié)果的符號(hào)位由兩個(gè)操作數(shù)符號(hào)位異或運(yùn)算得到。
- 除法:按照正數(shù)除法規(guī)則執(zhí)行,結(jié)果的符號(hào)位由分子符號(hào)位與分母符號(hào)位異或運(yùn)算得到。