11个回答
展开全部
第一位符号位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的左右不矛盾
1是0001,推算出0是0000;
-1的是1111,推算出0也是0000。
如果直接用反码(0变成1,1变成0)那么0就会有两个结果。
如果用第一位表示符号,后三位表示大小,那么就有空间浪费。
2.char类型是8位,1000 0000还原为原码:
最高位是1,表示负数,剩余的各位取反 111 1111 再+1 得到 1000 0000, +128的原码,整个数为-128
求采纳为满意回答。
1是0001,推算出0是0000;
-1的是1111,推算出0也是0000。
如果直接用反码(0变成1,1变成0)那么0就会有两个结果。
如果用第一位表示符号,后三位表示大小,那么就有空间浪费。
2.char类型是8位,1000 0000还原为原码:
最高位是1,表示负数,剩余的各位取反 111 1111 再+1 得到 1000 0000, +128的原码,整个数为-128
求采纳为满意回答。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
#include<math.h>
int main(void)
{
double a, b, c;
scanf("%lf %lf %lf", &a, &b, &c);
double delta = b * b - 4.0 * a * c;
double x1 = (-b - sqrt(delta)) / (2.0 * a);
double x2 = (-b + sqrt(delta)) / (2.0 * a);
printf("%.2f %.2f\n", x1, x2);
return 0;
}
-b 直接写成这样就是了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
直接在变量b前面加-(负号)即可。
设b=5
那么int a=-b 此时a=-5
再比如
设b=-5
int a=-b 此a=5 因为它相当于int a=-(-5) 即负负得正。
设b=5
那么int a=-b 此时a=-5
再比如
设b=-5
int a=-b 此a=5 因为它相当于int a=-(-5) 即负负得正。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
就直接写啊,
举个例子啊:
int a = 19;
int b = 0-a; 这里b就是负数了,0-19就是 -19了。
举个例子啊:
int a = 19;
int b = 0-a; 这里b就是负数了,0-19就是 -19了。
更多追问追答
追问
0-b是负b么
追答
dt = 0-(b-4*a*c)/2*a; 这就是用代码来表示。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询