当前位置:首页 » 编程语言 » c语言中如果输出一个负数
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言中如果输出一个负数

发布时间: 2023-05-27 13:11:26

A. c语言中怎么输出一个负16进制的数

负数用十六进制表示,通常用的是补码的方式表示。
int
a=-3;
在C语言中可以这么输出:printf("%hhx\n",
a);
十六进制(英文名称:Hexadecimal),是计算机中数据的一种表示方法。同我们日常生活中的表示法不一样。它由0-9,A-F组成,字母不区分大小写。与10进制的对应关系是:0-9对应0-9;A-F对应10-15;N进制的数可以用0~(N-1)的数表示,超过9的用字母A-F。
正数的补是它本身;负数的补码是它本身的值每位求反,最后再加一。
例如:求-3的十六进制
3的十六进制为0003,3求反之后是C,再加1,成D,所以-3的十六进制就是:FFFD

B. c语言问题,为什么会输出负数

这个问题有多种可能,不一而足。

  1. 算法有错误,最终计算结果是负数。输出自然会是负数。

    例如:

    inta=1;
    intb=a-2;
    printf("b=%d",b);
    //输出结果:b=-1
  2. 超过变量类型的最大取值范围,发生溢出。

    例如Turbo C里int是16位,取值范围-32768~32767。如果计算过程当中,数值超过32767,由于补码的关系。结果就有可能是负数。这种情况,就需要使用取值范围更大的数据类型。

    例程:

    #include<stdio.h>
    voidmain(){
    inta,b,ch;
    a=32767;
    b=a+1;
    printf("a=%d,b=%d",a,b);
    ch=getch();
    }
    //输出结果:a=32767,b=-32768

C. 在C语言里要输出一个负数的值!

type(数的类型)number(你要输出的数);
printf("% +d",number)
例如
int i=-617;
printf("% +d",i);
"+"号是输出符号的

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

第一位符号位1为负,0为正。 正数的补码和2进制原码是一样的。

负数的补码:

1、先取绝对值|x| ;

2、对|X|+1 ;

3、对|X|+1 取反,就得到它的补码了 。

计算机中存放整型数据都是按补码的形式存放的。

(4)c语言中如果输出一个负数扩展阅读:

有符号数的表示方法是由硬件决定,而不是由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。

E. C语言负数用%u形式输出

%u的参数是指的输出无符号数,1的二进制码是 0000 0001 (八位进制表示的话) 。 -1的表示就是各位求反+1 八位二进制码就是1111 1111 ,你用%u的参数就是输出无符号数,就不考虑最高位了,所以就是 1111 1111的十进制值,就是255 ,16位的计算机同理。