一文搞懂如何计算源码,反码,补码 最近有朋友问起这些,于是就简单的讲一下吧(只讲求法,没有包含真正的意义)。 源码怎么求 //原码就是早期用来表示数字的一种方式,用最高
最近有朋友问起这些,于是就简单的讲一下吧(只讲求法,没有包含真正的意义)。
源码怎么求//原码就是早期用来表示数字的一种方式,用最高位表示符号位,最高位为‘1’表示负号,‘0’表示正号。其他位存放该数的二进制的绝对值
正数的源码就是本身的二进制表示,负数的源码就是它的绝对值的源码,然后把最高位(符号位) 置1
举例说明:
int类型的 5 的二进制表示为 101B(B表示二进制位), 在32位机器上占四个字节,那么高位补零就得源码为:
00000000 00000000 00000000 00000101
int类型的 -5 的源码就是5的源码,然后给最高位换成‘1’:
10000000 00000000 00000000 00000101
反码怎么求 ?
//正数的反码就是原码,负数的反码等于原码除符号位以外所有的位取反
举例说明:
int类型的 5 的反码是
00000000 00000000 00000000 00000101
int类型的 -5 的反码是
11111111 11111111 11111111 11111010
除开符号位 所有位 取反
补码怎么求?//正数的补码与原码相同,负数的补码为其原码除符号位外所有位取反,然后最低位加1(也就是反码加1)
举例说明:
int类型的 5 的补码是:
00000000 00000000 00000000 00000101
int类型的 -5 的补码是
11111111 11111111 11111111 11111011
就是其反码加1
好了最后问问小伙伴 -107的源码,反码,补码你会求了吗?
//源码
1000 0000 0110 1011
//反码
1111 1111 1001 0100
//补码
1111 1111 1001 0101
本文只是简单的讲了一下源码、反码、补码的求法,至于它们的深层意义同学们可以参考这个博客
https://www.imooc.com/article/16813?block_id=tuijian_wz
本人才学尚浅,发博客的主要目的是为记录自己的学习过程,帮助自己更好的巩固基础,也希望这些小的知识点可以为小伙伴们带来一点帮助,如果有说的不对的地方,欢迎大家在评论区指出。最后希望小伙伴们可以点个推荐,多多支持,感谢。