需要准备的材料分别有:电脑、C语言编译器。
1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。
2、在test.cpp文件中,输入C语言代码:int a = -1024printf("%d", -a)。
3、编译器运行test.cpp文件,此时成功把负数转化为正数进行了输出。
第一位符号位1为负,0为正。 正数的补码和2进制原码是一样的。
负数的补码:
1、先取绝对值|x| ;
2、对|X|+1 ;
3、对|X|+1 取反,就得到它的补码了 。
计算机中存放整型数据都是按补码的形式存放的。
扩展资料:
有符号数的表示方法是由硬件决定,而不是由C决定的。有三种表示方法:
1、二进制原码
0000 0001 表示 1
1000 0001 表示 -1
这个方法有个缺点是有两个零: +0 和 -0。这会引起混淆,而且用两个位组合来表示一个值也有些浪费。
2、二进制补码(最普遍的系统)
区别在于 singned 和 unsigned:
1)如果是无符号字节, 1000 0000 该组合为 128
2)如果是有符号字节, 1000 0000 该组合为 -128
第一种表示数的范围是 0 ~ 255;
第二种表示数的范围是 -128 ~ +127,对于一个二进制补码数取负数,最简单的方法就是取反、加 1。
3、二进制反码
通过反转位组合中的每一位以形成一个数的负数,例如:
0000 0001 表示 1
1111 1110 表示 -1
这种方式也有一个 -0:1111 1111。其范围是 -127 ~ +127。
当然是补码形式了,虽然负数也有用原码表示的(就是最高位变成1)。但是你可以发现如果用原码表示负数有一问题当数值从0增加到127时,原码从0~7F。但是一旦到了负数区域就从-0到-127,原码从80~FF,当他们进行转化的时候很不方便,而且又多了一个-0出来。显然是不希望了。于是就有了反码,这个概念解决了正负数的对称问题,也就是说将-0~-127变成了-127~-0,这样的话就和0-127形成了很好的对称结构,只需要取反就可以得到相反数。但是,还没有解决-0的问题。
于是就有了补码这个概念,他的定义是将反码+1,刚好将-0给挤走了,增加了数值的值域(来了一个-128)。
计算机在运算的时候把所有的二进制全部当做无符号数来运算,并且负数全部采用补码(这样的话-0和+0的冲突就没了)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)