‘壹’ c语言 负数运算 请高手帮忙解释下
-5*3=-15
5*-3=-15
-5*-3=15
这三个不解释了吧。
-5/3=-1
5/-3=-1
-5/-3=1
这三个你这么理解,5/3=1,然后负负为正,正负为负,计算机的运算过程差不多也是这样。
-5%3=-2
5%-3=2
-5%-3=-2
这三个也是那么理解的,首先不管符号,然后5%3=2,然后负负为正,正负为负。。。
-5&3=3
5&-3=5
-5&-3=-7
这个是按位与,-5二进制是10000101,负数在计算机中是以补码保存的,补码是11111011,3是00000011,正数不用存补码,还是原码,按位与之后就是00000011,就是3。
5和-3按这个算法,5原码是00000101,-3原码是10000011,补码是11111101,按位与,00000101,就是5。
-5和-3,都是补码,-5补码是11111011,-3补码是11111101,按位与,结果是11111001,这里要注意了,这个数的符号位为1,所以这是一个补码,要翻译一下,除符号位不变外,其他位减1取反,结果是10000111,就是-7。
-5<<3=-40
5<<-3=-1610612736
-5<<-3=1610612736
移位,第一个还好说,-5的补码是11111011,左移3位,左移的过程后边是要补两个数的符号位的与运算的,结果就是11011000,这个数是一个负数,需要转换一次,除符号位外-1取反,就是10101000,就是-40。
第二个和第三个比较麻烦,我以上给你说的都是按照8位的存储说的,其实计算机真正是按照32位存储的,也就是传说中的32位系统,未来还会有64位系统这一说法,那一个数字就是64位了,好了,现在咱们看32位的情况。5的实际存储为32位的,之前不提另外的0因为不影响运算结果,现在影响了,就加上。左移-3位,就是右移3位,前边补1,也就是两数的符号位求异或的结果,异或说白了还是负负为正,正负为负,这里补的就是1,结果就是,这个数就是-1610612736。
‘贰’ 加减号在c语言中怎么表示,比如A加减B怎么表示
作为编程语言,在运算时,一个表达式只可以有一个结果。
所以在任何的编程语言中,都不会支持±这个操作。
要实现A±B,只能分别计算A+B和A-B,并且分别将值保存在不同变量中。
如果该操作频繁使用,可以将其封装为函数。
如,计算a±b并存储于参数数组c的函数可以写作:
voidjiajian(inta,intb,intc[2])
{
c[0]=a+b;
c[1]=a-b;
}
这里的a,b,c的类型均设置为int,具体类型可以根据实际需要修改。
‘叁’ C语言编写加减计算程序
#include <stdio.h>
main (void)
{
int a,b,c;
char op;
scanf ("%d%c%d",&a,&op,&b);//最好空格去掉,这样就可以直接写成a+b或者a-b。如果有空格的话要记得空格也要打a + b。要不会出现错误 ,而且输入的时候需要用地址符&····
if(op=='+')
{c=a+b;}
if(op=='-')
{c=a-b;}
printf("%d%c%d=%d\n",a,op,b,c);//楼主这句应该放在数据处理完后。。要不你输出的a,op,b都是在没处理过的数,也就是原来的值,而且最好是把,去掉,这样更美观 ,而且printf后面不需要&。。。切记。而且没必要那样输出。请楼主看我的printf```
}
‘肆’ c语言优先级别里的 正号负号 和 加减 怎么判断哪个是哪个
加减号是双目运算符,必须两边都有数据(变量或常数),结合性从左至右,即可简单理解为从左至右计算。正负号是单目运算符,只有一个数据,且是右结合的,可以理解为它只作用在紧接它的右边的数据上。如a+b、a-b中的+和-是加减号,而-x、+y中的+和-是正负号。所以它们在C语句中是很好识别的。
‘伍’ 谁能帮我编写一个C语言实现负数加减乘除的程序啊。要对的
#include<stdio.h>
#include<conio.h>
void main()
{
while(1)
{
int a=0,b=0,c=0,result,key;
char d;
printf("输入两个整数:\n");
scanf("%d",&a);
scanf("%d",&b);
printf("选择算法 '+','-','*','/' \n");
scanf(" %c",&d);
printf("输入计算结果:\n");
scanf("%d",&result);
switch(d)
{
case'+': c=a+b;break;
case'-': c=a-b;break;
case'*': c=a*b;break;
case'/': if(b>0) c=a/b;break;
}
if(result==c)
printf("回答正确!\n");
else printf("错误,正确答案是:%d\n",c);
printf("继续(y) 退出(n)\n");
key =getch();
if(key=='n' || key=='N')
break;
}
}
‘陆’ C语言正负数的和
您好:
这个题目是在考察循环知识,
我们采用for循环来计算1+1+2+4+...+100的和,
但是,由于是正负交替,所以我们采用一个变量来控制符号,
就是用变量temp=1,然后让它和 -1 相乘,这样正负就会交替了。
下面给出图片和代码:
#include<stdio.h>
intmain(void)
{
intn;
while(~scanf("%d",&n))
{
intsum=0,temp=1,i=1;
for(;i<=n;i++,temp*=-1)
sum+=i*temp;
printf("%d
",sum);
}
return0;
}
‘柒’ c语言复数加减法如何实现输入型如1-i或1+i的数据
你必须有一个输入格式约定,无论简单或复杂。
例如:必须有实部和虚部,格式 为 3-2i 1-i 1+i 等。
然后才好处理。
这里放入char str[80];了,如果是键盘输入流,也用类似格式。
#include <stdio.h>
main(){
char str[80]="1-i"; // 1+i 2-2i 2+3i 0-i
int r,m;
int i,flag, s;
flag = sscanf(str,"%d%di",&r,&m);
if (flag==1) {
s = 1;
for (i=0;i<strlen(str);i++) if (str[i]=='-') s= -1; else if (str[i]=='+') s=1;
m = s;
}
printf("real=%d imag=%d\n",r,m);
return 0;
}
‘捌’ C语言如何表示正负值问题
c语言有两种数据类型,一种是整型,一种是浮点型 ,整型类型一般用的原码表示,浮点类型一般用的IEEE754标准进行编码。
整型数中原码表示正负数,取最高位为符号位,以8位二进制数来表示1和-1。1的二进制为
0 000 0001 //最高位为符号位,0表示正数,1表示负数
1 000 0001 //这个表示-1
IEEE754浮点数编码,使用的格式类似于 (-1)^s * M* 2^E,其中s是符号位,M是有效位数,E指的是指数,s符号位占1位,如果是0,则(-1)的0次方为1,表示是一个正数,如果s位是-1,则表示是一个负数。