关于补码的问题
因为最近在看鱼哥的汇编视屏,有一讲里面说到了补码。因为也没找到鱼哥的补码教学视频,我自己百度,然后呢,基本搞明白了,但是有一个问题晕菜了。比如说内存中存储有一个二进制为1111的数,那他是怎么分辨这个1111是15呢,还是是-1的补码呢? 是补码,百度百科上的介绍第一句也讲了:
在计算机系统中,数值一律用补码来表示和存储。 单独说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-28 17:32
单独说1111是15,还是-1是不对的
因为1111既可以是15,也可以是-1
具体是什么,需要根据上下文环境判断
多谢大神解答
页:
[1]