使用C我想知道int x的第一位是1还是0,所以我只是做了这样的事情:
int y = (x<<(sizeof(int)*8)-1)>>((sizeof(int)*8)-1);
事情是,当y预期为0 ... 01时,它返回-1。但我认为-1的表示是1 ... 11。 为什么会发生这种情况,因为y并不是满满的,或者是它?
答案 0 :(得分:1)
第一位你肯定意味着LSB对吗?所以假设您的二进制数看起来像
8 = 0001000
MSB LSB
然后你可以简单地用
检查LSBint set = x & 0x1;
如果设置为0,则X的LSB为0,否则为1.