一张图弄懂有符号整数(signed int)在计算机中表示(补码)的问题

用1字节8位数值来举例,如上图所示👆

大家可以自己比着画一个数轴,数轴上面是整型数值,下面是数值在计算机中的表示,也就是数值的补码。

我们在教材上学到,有符号数值在计算机中是通过其补码来表示的。其中,正整数的补码就是其本身的二进制原码,负整数的补码就是其本身的绝对值的二进制原码取反再加一,这张图可以帮你理解为什么负整数的补码非得是按这种方式表示的。

当然,还有很多补充点我暂时没找到合适的图形来表达,但是这张图片已经很简洁明了,我一直对这块内容理解得很模糊,一直到想清楚用这个方法来表示。

做题过程中会看到很多二进制运算问题,记住了图中标识的几个特殊点的话会比较方便计算,例如(C语言代码):

#include <stdio.h>
void main(
{
    short int a = -32768, b;
    b = a - 1;
    printf("a = %d, b = %d\n", a, b);
}

如果你知道-32768是-2^15的话,那么a的数值就是位于数轴的最左端,那么a - 1那当然是回到数轴的最右端,即32767。


另外,感谢一位博主的这篇文章的清晰解读,附下链接:

有符号数在计算机中的表示_余龙飞

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值