在单片机中,什么是补码?最好能给出定义和例子,谢谢

来源:百度知道 编辑:UC知道 时间:2024/06/03 14:48:17

补码就是表示负数的一种形式。
用补码表示负数,就是所有位数字都取反再加1

比如用8位表示-1,1就是1,那-1就是1取反再加1,就是11111111
这样表示负数有两个好处,
第一,只有一个0。如果用第一位表示符号位,那么就会有+0和-0两种0.
第二,这样可以把减法做成取补,然后再做加法。

分两种情况:1.正数的补码是本生(原码),如十六进制数:01H(1)
写成二进制数即:00000001B,则补码就是00000001B(01H);
2.负数的补码是原码(除了符号位)的反码加1,如十六进制数:81H(-1)
写成二进制数即:10000001B,取反:11111110,加1:11111111(反码);

上面的理论相当正确 可是在单片机上 还有一种取补
(就像三角型的补角~~)
如对100来说20取补为80~~
单片机16进制的 (定时计数器用的多)(16位来说) 0XFFFF取补为
0X10000-0XFFFF=0X0001
公式 X(取补)=0X10000-X;(16位)