當前位置:首頁 » 編程語言 » 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位的計算機同理。