C语言学习【5】-补码

计算机内存储整数都是用的补码。

已知十进制求二进制

  • 求正整数的二进制

        除2取余,直至商为0,余数倒叙艾许

  • 求负整数的二进制

        先求出与该负数相对应的正整数的二进制代码,然后将所有位取反,末尾加1,不够位数时,左边补1【所谓不够位数就是不满数据类型的长度,例int i = -3,int为32bit,而-3的绝对值的二进制代码为11,加1后为100,占3位,则左边的28位都补1】
      
0全是0

   已知二进制求十进制

  • 如果首位时0,则表明时正整数,按普通换算方法来求

    

  • 如果首位是1,则表明是负数

        将所有位取反,末尾加1,所得数字就是该负数的绝对值

  • 如果全是0,则对应的十进制数字就是0

    

输出结果为

扫描二维码关注公众号,回复: 8987677 查看本文章

从上面的结果我们可以看出,在有符号整形变量中,所能存储的整数范围是[-32768,32767]。

那为什么32767加1后就成了-32768了呢?

根据上面的结论,可以得出

32767   原码:‭0111 1111 1111 1111‬  补码:0111 1111 1111 1111

补码加上1后为:1000 0000 0000 0000

因首位是1,所以可得十进制数为负数

补码取反加1,可得十进制数的绝对值为32768

综上可得,32768加1后可得-32768

发布了20 篇原创文章 · 获赞 1 · 访问量 390

猜你喜欢

转载自blog.csdn.net/qq_41505080/article/details/104160936
今日推荐