2025-11-08 06:29:38
单片机判断负数主要看最高位也就是最前一位数字是0还是1。如果是0表示正数,比如+5显示成00000101;如果是1表示负数,比如-5显示成11111011。这时候单片机会用"AND指令"和"1"比较,如果结果等于1就说明是负数。比如8位单片机能表示-128到+127,16位能到-32768到+32767,负数范围正好是正数两倍多。
为什么这样判断呢?因为单片机用补码存储负数,补码是把正数各位取反再加1。比如+5的二进制是00000101,取反后是11111010再加1变成11111011就是-5。这时候最高位1代表负数,后面7位是数值部分。当执行"AND A, 1"指令时,如果结果A=1就说明最高位是1,所以是负数。比如用8位数据测试,当A=01111111(+127)时AND结果0,是正数;当A=10000000(-128)时AND结果1,是负数。这种判断方法能覆盖所有负数范围,而且指令执行只需要1个时钟周期,效率很高。
本题链接: