#include <iostream>
using namespace std;
short rawtoshort(unsigned short raw, unsigned int bits)
{
unsigned short signmask=1<<(bits-1);
return ((raw&signmask)?(-(short)signmask):0) + (raw&(signmask-1));
}
int main() {
cout<<rawtoshort(1023, 10);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnNob3J0IHJhd3Rvc2hvcnQodW5zaWduZWQgc2hvcnQgcmF3LCB1bnNpZ25lZCBpbnQgYml0cykKewogICAgdW5zaWduZWQgc2hvcnQgc2lnbm1hc2s9MTw8KGJpdHMtMSk7CiAgICByZXR1cm4gKChyYXcmc2lnbm1hc2spPygtKHNob3J0KXNpZ25tYXNrKTowKSArIChyYXcmKHNpZ25tYXNrLTEpKTsKfQoKaW50IG1haW4oKSB7CiAgICBjb3V0PDxyYXd0b3Nob3J0KDEwMjMsIDEwKTsKCXJldHVybiAwOwp9