好吧,说下这个正数和负数
值为5它在计算机中表示为:
00000000 00000000 00000000 00000101
5转换成二制是101,不过int类型的数占用4字节(32位),前面填了一堆0
-5在计算机中,负数以原码的补码形式表达。
原码:
一个正数,按照绝对值大小转换成的二进制数就是正数的原码
一个负数,按照绝对值大小转换成的二进制数,然后最高位补1,就是负数的原码
比如
00000000 00000000 00000000 00000101 是5的原码。
10000000 00000000 00000000 00000101 是-5的原码。
补码
正数的补码与原码相同
负数的补码为对该数的原码除符号位外各位取反,然后在最后一位加1
比如:
10000000 00000000 00000000 00000101 的反码
是:11111111 11111111 11111111 11111010
那么,补码为:
11111111 11111111 11111111 11111010 + 1 = 11111111 11111111 11111111 11111011
-5 在计算机中表达为:11111111 11111111 11111111 11111011
转换为十六进制:0xFFFFFFFB
楼主留言:
道理倒是明白,关键是收到数据后怎么处理。收到的数据有正数也有负数时,怎么才知道自己收到的是负数,负数在哪个寄存器里。