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)
下列前嫌程序已经调试通过,符合楼主要求:void
main(void)
{
unsigned
int
kkk
//先设定无符号数变量,液桥如kkk;
printf("请输入一个数字:\n")
//提示
scanf("%d",
&kkk)
//输入数据
if(kkk
>
32767)
printf("-
%d
\闹悔猛n",
65536
-
kkk)
//如果最高位为1,输出“负号,以及补码”
else
printf("+
%d
\n",
kkk)
//如果最高位为0,输出“正数”
}
第一位符号位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。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)