瞌睡猪 发表于 2017-3-27 01:39:12

关于补码的问题

因为最近在看鱼哥的汇编视屏,有一讲里面说到了补码。因为也没找到鱼哥的补码教学视频,我自己百度,然后呢,基本搞明白了,但是有一个问题晕菜了。
   比如说内存中存储有一个二进制为1111的数,那他是怎么分辨这个1111是15呢,还是是-1的补码呢?

lumber2388779 发表于 2017-3-27 09:13:43

是补码,百度百科上的介绍第一句也讲了:
在计算机系统中,数值一律用补码来表示和存储。

人造人 发表于 2017-3-28 17:32:49

单独说1111是15,还是-1是不对的
因为1111既可以是15,也可以是-1
具体是什么,需要根据上下文环境判断
用C语言举个例子
#include<stdio.h>

int main(void)
{
        int t = 0xffffffff;

        printf("%d\n", t);
        printf("%u\n", t);

        return 0;
}


-1
4294967295
请按任意键继续. . .


同样的数据0xffffffff
输出却不一样,因为上下文不一样
printf("%d\n", t);// 有符号输出,因为有符号,所以解释成了 -1
printf("%u\n", t); // 无符号输出,因为无符号,所以解释成了4294967295

其实它只是一个数据,具体含义要上下文环境决定

瞌睡猪 发表于 2017-3-30 23:07:15

人造人 发表于 2017-3-28 17:32
单独说1111是15,还是-1是不对的
因为1111既可以是15,也可以是-1
具体是什么,需要根据上下文环境判断


多谢大神解答
页: [1]
查看完整版本: 关于补码的问题