在c语言中怎么表示负数。

在c语言中怎么表示负数。,第1张

第一位符号位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。

在C语言中,输出负号的方毕带李法有以下几种:

1. 直接输出负号字符:可以使用printf()函数直接输出负号字符“-”,例如:

```c

printf("负数为:-10")

```

2. 使用"%d"格式化符号输出负数:使用“%d”格式化符号输出负数时,程序会自动将负数的符号输手迟出为负号“-”,例如:

```c

int num = -10

printf("负数为:%d", num)

```

3. 使用"%u"格式化符号输出无符号整数:使用“%u”格式化符号输出无符号整数时,程序会将负数转换为无符号整数再进行瞎行输出,因此会输出负数对应的补码形式。如果需要输出负号,可以通过在数值前面添加负号“-”来实现,例如:

```c

int num = -10

printf("负数为:%u", -num)

程序会输出负数的原因是,在这个程序中你档蔽好没有对每次运算的结果进行检查,因此当乘积超出了long类型的最大值时,就会产生溢出,导致结果为负数。

为了避免这个问题,你可以并则在每次运算后检查结果是否已经超出了long类型的范围行铅,并在必要时退出循环。可以这样改:

#include<stdio.h>

main()

{

long i

i=chengji()

printf("%ld", i)

}

long chengji () {

long a, b=1

for (a=1a<=100a+=2)

{

if (b >LONG_MAX/a) break

b *= a

}

return b

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12392627.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存