У меня есть функция, которая принимает int8_t val
и преобразует ее в int7_t
.
//Bit [7] reserved
//Bits [6:0] = signed -64 to +63 offset value
// user who calls this function will use it correctly (-64 to +63)
uint8_t func_int7_t(int8_t val){
uint8_t val_6 = val & 0b01111111;
if (val & 0x80)
val_6 |= 0x40;
//...
//do stuff...
return val_6;
}
Каков лучший и самый быстрый способ манипулирования int8 в int7?Я сделал это эффективно и быстро?или есть лучший способ?
Цель - ARM Cortex M0 +, если это имеет значение
ОБНОВЛЕНИЕ:
После прочтения разных ответов я могу сказать вопросспросили неправильно?(или мой код в вопросе - это то, что давало неверные предположения другим) У меня было намерение сделать int8-int7
Так что это будет сделано бездействием, потому что
8bit:
63 = 0011 1111
62 = 0011 1110
0 = 0000 0000
-1 = 1111 1111
-2 = 1111 1110
-63 = 1100 0001
-64 = 1100 0000
7bit:
63 = 011 1111
62 = 011 1110
0 = 000 0000
-1 = 111 1111
-2 = 111 1110
-63 = 100 0001
-64 = 100 0000