當前位置:首頁 » 編程語言 » c語言數組怎麼存放負數嗎
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言數組怎麼存放負數嗎

發布時間: 2022-09-26 03:08:48

㈠ 關於在c語言中無符號整形存儲負數問題

你的理解是對的。
最高位為1時,對於有符號來說,這個數是負數,而對於無符號數而言,由於最高位也是有效存儲位,所以可以存儲更大范圍的數。
話再說回來,既然是無符號數,輸出格式應該是"%u",而不是"%d",這樣才能做到「表裡如一」,「改頭換面」只會亂了自己,這不是游戲,嚴謹是必須的。

㈡ c++中數組怎麼存儲負數

您好,很高興能回答您的問題。
在C++中,存儲負數和存儲
正數
是一樣的形式哦,可以給數組賦值,也可以從鍵盤
輸入數據

以上就是我的回答,希望能幫助到您。若有不當之處,敬請批評指正。

㈢ 在c語言中怎麼表示負數。

第一位符號位1為負,0為正。
正數的補碼和2進制原碼是一樣的。
負數的補碼:
1、先取絕對值|x|

2、對|X|+1

3、對|X|+1
取反,就得到它的補碼了

計算機中存放整型數據都是按補碼的形式存放的。

(3)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。

㈣ C語言數組下標可以為負嗎

下標可以是負值,它的意思是向前定址,前提是你知道向前定址尋的內存地址的東西是你之前已經指定好的,就相當於你動態開辟一塊內存給你的數組,這樣這個內存裡面的所有數據都是你需要的,向前定址也沒什麼問題。

㈤ C語言數組下標可以為負嗎

分清聲明還是語句。
聲明裡的中括弧里的數字不能為負。例如 int a[-2]; 是錯的,數組大小不能為負。

語句里的中括弧,C/C++ 看成運算符,不叫標點符號。
數組元素和指針有恆等關系:
a[i] == *(a+i)
所以,i 為 負 的時候,a[i] == *(a- fabs(i))。只要 a-fabs(i) 這個地址里 有 數值,就可以拿來 運算使用。

"很多書上說數組下標不能為負" -- 因為是初級教材。

高級教材里甚至提到, a[i] == i[a] 這也是正確的 !(有人在「知道」里問過,我也回答過。)
當然,只能是變數形式,不能寫阿拉伯數字,事實上,也確確實實正確的。

㈥ 數組如何存儲負數

任何數組,只要能存整數,那麼必然可以直接存負數....

lz想問的不應該是這個意思吧。

㈦ c語言新手提問 如何定義數組下標為負數的數組

下表為負的數組在 C 語言里並不是不能做到。


首先,創建一個正常的數組 int A[20];。然後用指針指向其中間的元素 int *A2 = &(A[10]);


這樣,A[-10 ... 9] 就是一個可用的有效范圍了。

/*樣例示範*/
#include<stdio.h>

intmain(intargc,constchar*argv[])
{
intA[20],*A2=&(A[10]),i;

for(i=0;i<20;i++)A[i]=i*2;

for(i=-10;i<10;i++)printf("%d ",A2[i]);

return0;
}

㈧ 在c語言中怎麼表示負數。

第一位符號位1為負,0為正。 正數的補碼和2進制原碼是一樣的。

負數的補碼:

1、先取絕對值|x| ;

2、對|X|+1 ;

3、對|X|+1 取反,就得到它的補碼了 。

計算機中存放整型數據都是按補碼的形式存放的。

(8)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。

㈨ c++中數組怎麼存儲負數

您好,很高興能回答您的問題。
在C++中,存儲負數和存儲正數是一樣的形式哦,可以給數組賦值,也可以從鍵盤輸入數據。
以上就是我的回答,希望能幫助到您。若有不當之處,敬請批評指正。

㈩ 關於C語言負數的存儲問題。

首先要理解這個范圍怎麼來的
因為 char 和 unsigned char 是1個位元組,一個位元組=8個位,即1byte=8bit,計算機能用8個位表示的最大值就是1111 1111,即255,這是uchar 的,char型數據第8位是正負數的,所so char (-128 ~+127) 即 (正負)111 1111 ,超出范圍的賦值,就不確定它會被計算機理解成什麼了,你可以寫個測試代碼看一下