先验知识
- 正数的符号位是0
- 负数的符号位是1
- 正数的原码=反码=补码
- 负数的补码=负数的反码+1
- 负数的反码是由负数的原码符号位不变其余位取反得到的
例子
5的二进制如何表示?
0101
-5的二进制如何表示?
有两种求法
- 第一种:由正数的原码求解
- 先计算5的二进制,是00000101(前面四位是符号位,后面四位是5)
- 再对每一位取反,是11111010
- 再加1,是11111011
- 第二种:由负数的原码求解
- 先计算-5的原码,是10000101(前面四位是符号位,符号位是1)
- 符号位不变,其余为取反,得到反码,是11111010
- 反码加1,是11111011
总结
11111011如果是正数的话,则表示251,发现什么规律了吗?
给定一个负数是x,那么它的补码就是(256+x)的二进制表示,我说的这个规律只是适用于8位以内的,如果这个负数无法用8位表示,那就用12位表示,如果无法用12位表示,那就试试16位,递增4位,在用2的12次方加上这个负数,得到正数后,再表示为二进制。这个规律其实作用也不是很大,只是有些情况下可以加速计算。
网友评论