请问C语言中我想把一个正数变为负数怎么变 例如:9变成-9

Python014

请问C语言中我想把一个正数变为负数怎么变 例如:9变成-9,第1张

确实跟补码有关计算机为了使减法变为加法把负数用补码来存储(正数也是只不过正数的补码与原码相同)以钟表为例例如: 假设当前时针指向10点,而准确时间是6点,调整时间可有以下两种拨法: 一种是倒拨4小时,即:10-4=6 另一种是顺拨8小时:10+8=12+6=6 计算机内部计算类似于上面 它把(-4)变成储存为12-4=8(即所谓的补码)而计算机计算10-4时它就变成10+8=18 而钟表最大值为12所以18-12=6 于是计算就完成了(1)正数的补码:与原码相同(因为它本身是加数计算机可以计算所以不用变)。 例如,+9的补码是00001001。 (2)负数的补码:符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。(因为它不是是加数计算机不可以计算 所以要变成补码) 例如,-7的补码:因为是负数,则符号位为“1”,整个为10000111;其余7位为-7的绝对值+7的原码 0000111按位取反为1111000;再加1,所以-7的补码是11111001。简单点就是10000000( 128)-0000111(7)=11111001(121)而C语言中有符号的整数为16位从00000000,00000000 到011111111,11111111 即0到32767为正数所以补码为原码从11111111,11111111 到10000000,00000000为-1到-32768

需要准备的材料分别有:电脑、C语言编译器。

1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。

2、在test.cpp文件中,输入C语言代码:int a = -1024printf("%d", -a)。

3、编译器运行test.cpp文件,此时成功把负数转化为正数进行了输出。

这和C语言中数据的储存有关。C语言中数据的储存空间是有限的,比如说整型数据,占四个字节,从而整型数是有范围的,从-2^31+1到2^31,正负号根据二进制数第一位决定。并且运算是以二进制来进行的,当两个数加和超出范围时,自动舍去超出的位数(二进制),所以当然可能两个很大的正数相加等于负数咯。