你的理解是對的。
最高位為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 ,超出范圍的賦值,就不確定它會被計算機理解成什麼了,你可以寫個測試代碼看一下