#include typedef unsigned char uint8_t; typedef unsigned int uint16_t; uint16_t fd2b( uint16_t x ) { // Multiplyng for considering sign. return (((((x&0x70)>>4)*10+(x&0x0f))<<8)/100)*(x&0x80?-1:1); } uint16_t fb2d( uint16_t x ) { // FOr considering sign. uint8_t mask = x&0x80 ? 0x80 : 0; x *= 10; return ((x&0x700)>>4)|((((x&0xff)*10)&0xf00)>>8)|mask; } main( ) { uint16_t num = fd2b(P0); P1 = fd2b(num); // For testing. P2 = num; while(1); }