#include <stdio.h>
#include <stdint.h>
uint16_t floatToRGB565(float input)
{
uint8_t x = input*255;
uint8_t r = (x&248u);//0xff-0x07, 5msb
uint8_t g = (x&252u);//0xff-0x03, 6msb
uint8_t b = (x&248u);//0xff-0x07, 6msb
return (r<<8)|(g<<3)|(b>>3);// assuming r is at msb
}
int main(void) {
// your code goes here
printf("%u\n", (unsigned int)floatToRGB565
(1.0)); printf("%u\n", (unsigned int)floatToRGB565
(0.5)); printf("%u\n", (unsigned int)floatToRGB565
(0.0)); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRpbnQuaD4KdWludDE2X3QgZmxvYXRUb1JHQjU2NShmbG9hdCBpbnB1dCkKewoJdWludDhfdCB4ID0gaW5wdXQqMjU1OwoJdWludDhfdCByID0gKHgmMjQ4dSk7Ly8weGZmLTB4MDcsIDVtc2IKCXVpbnQ4X3QgZyA9ICh4JjI1MnUpOy8vMHhmZi0weDAzLCA2bXNiCgl1aW50OF90IGIgPSAoeCYyNDh1KTsvLzB4ZmYtMHgwNywgNm1zYgoJCglyZXR1cm4gKHI8PDgpfChnPDwzKXwoYj4+Myk7Ly8gYXNzdW1pbmcgciBpcyBhdCBtc2IKfQoKaW50IG1haW4odm9pZCkgewoJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJcHJpbnRmKCIldVxuIiwgKHVuc2lnbmVkIGludClmbG9hdFRvUkdCNTY1KDEuMCkpOwoJcHJpbnRmKCIldVxuIiwgKHVuc2lnbmVkIGludClmbG9hdFRvUkdCNTY1KDAuNSkpOwoJcHJpbnRmKCIldVxuIiwgKHVuc2lnbmVkIGludClmbG9hdFRvUkdCNTY1KDAuMCkpOwoJcmV0dXJuIDA7Cn0KCg==