什麼是有符號數和無符號數,有符號整型資料和無符號資料型別是什麼?

時間 2021-05-07 20:01:09

1樓:假面

有符號數就是用最高位表示符號(正或負),其餘位表示數值大小,無符號數則所有位都用於表示數的大小

有符號數和無符號數是針對二進位制來講的。

有符號數用最高位作為符號位,「0」代表「+」,「1」代表「-」;其餘數位用作數值位,代表數值。

比如:0011 表示 +3;1011 表示 -3。

無符號數全部二進位制均代表數值,沒有符號位。即第一個"0"或"1"不表示正負。

比如:0011 表示 3;1011 表示 11。

c支援所有整形資料型別的有符號數和無符號數運算。儘管c標準並沒有指定某種有符號數的表示,但是幾乎所有的機器都使用二進位制補碼。

通常,大多數數字預設都使有符號的,c也允許無符號數和有符號數之間的轉換,當執行一個運算時,如果它的一個運算數是有符號的而另一個是無符號的,那麼c會隱含地將有符號引數強制轉換為無符號數,並假設這兩個數都是非負的,來執行這個運算。

擴充套件資料:

一個有符號的資料型別的最小值一般 是這樣計算的:

有符號的資料型別的最大值的計算方法完全和無符號一樣,只不過它少了一個最高位(見第3點)。但在負值

範圍內,數值的計算方法不能直接使用1* 26 + 1* 25 的公式進行轉換。

在計算機中,負數除為最高位為1以外,還採用補碼形式進行表達。所以在計算其值前,需要對補碼進行還原。 這裡,先直觀地看一眼補碼的形式:

在10進位制中:1 表示正1,而加上負號:-1 表示和1相對的負值。

那麼,我們會很容易認為在2進位制中(1個位元組): 0000 0001 表示正1,則高位為1後:1000 0001應該表示-1。

計算機中帶有符號數用補碼錶示的優點:

1、負數的補碼與對應正數的補碼之間的轉換可以用同一種方法——求補運算完成,可以簡化硬體;

2、可將減法變為加法,省去減法器;

3、無符號數及帶符號數的加法運算可以用同一電路完成。

可得出一種心算求補的方法——從最低位開始至找到的第一個1均不變,符號位不變,這之間的各位「求反」(該方法僅用於做題)

2樓:月似當時

無符號數(unsigned)是計算機程式設計中的一種數值資料型別。

有符號數(signed)可以表示任何型別規定範圍內的數,而無符號數只能表示非負數(0及正數)。

有符號數能夠表示負數的代價是能夠表示的正數範圍的縮小,因為其約一半的數值範圍要用來表示負數(如8位有符號整數中,對應8位無符號整數表示128~255的部分被用於表示-127~-1)。無符號數可以利用其所佔有的記憶體位來表示儘可能大的數。

例如,16位有符號整數可表示-32768~32767之間的任意整數,而16位無符號整數可表示0~65535之間的數。若將有符號數轉換為二進位制,則其數值型別允許的最左一位用於表示符號(1為負數,0為正數和0),但在無符號數中,最左一位與其右各位一樣用於表示數值。

有符號數的編碼方式,常用的是補碼,另外還有原碼和反碼等。用不同二進位制編碼方式表示有符號數時,所得到的機器數可能不一樣,但是真值是相同的。

3樓:匿名使用者

有符號數和無符號數是針對二進位制來講的。

有符號數用最高位作為符號位,「0」代表「+」,「1」代表「-」;其餘數位用作數值位,代表數值。

比如:0011 表示 +3;

1011 表示 -3。

無符號數全部二進位制均代表數值,沒有符號位。即第一個"0"或"1"不表示正負。

比如:0011 表示 3;

1011 表示 11。

c支援所有整形資料型別的有符號數和無符號數運算。儘管c標準並沒有指定某種有符號數的表示,但是幾乎所有的機器都使用二進位制補碼。通常,大多數數字預設都使有符號的,c也允許無符號數和有符號數之間的轉換,當執行一個運算時,如果它的一個運算數是有符號的而另一個是無符號的,那麼c會隱含地將有符號引數強制轉換為無符號數,並假設這兩個數都是非負的,來執行這個運算。

4樓:

有符號的數。一般都是隻做特殊標記的數字。

5樓:沙裡波特

這都是幼兒園、小學的知識,還能怎麼通俗一點?

----

無符號數,就是沒有符號的數字。在幼兒園,就學到了。比如,年齡 5 歲、體重 60、身高 120。。。

有符號數,就是有正負號的數字。在小學,就學到了。比如,零下三度(-3),退後兩步(-2)。。。

----

這兩種數,在計算機中,都用二進位制表示。

正負符號,也是用 0、1 表示。這就是補碼。

6樓:鬆睿博

通俗來講,就是

假如,int一樣吧,

signed int【有符號整型】=-2147483648~2147483648

unsigned int【無符號整型】=0~4294967295有沒有發現,2147483648 x2=4294967295很明顯,事實上int的範圍是固定的,就是4294967295的長度,所以有符號的就是從負數到正數,長度是4294967295。

無符號的就是0到4294967295,長度也是4294967295。

有符號整型資料和無符號資料型別是什麼?

7樓:為江山放棄了愛

整型有無符號(unsigned)和有符號(signed)兩種型別,在預設情況下宣告的整型變數都是有

內符號的型別(char有點特別)容,如果需宣告無符號型別的話就需要在型別前加上unsigned。

無符號整型和有符號整型的區別就是無符號型別可以存放的正數範圍比有符號整型中的範圍大一倍,因為有符號型別將最高位儲存符號,而無符號型別全都儲存數字。

擴充套件資料

無符號數只表示大小,有符號數最高位(二進位制情況下最高位表示符號位),在同一作業系統下,有符號數和無符號數的最大數值在大小上的關係是2*x+1(x表示有符號數的最大值,2*x+1表示無符號數最大值)。二者表示的資料範圍大小是相同的,但是範圍不同。

8樓:匿名使用者

無符號數只表示bai大小,有符du號數最高位(二進

zhi制情況下最高位dao表示內符號位),在同一作業系統下,容有符號數和無符號數的最大數值在大小上的關係是2x+1(x表示有符號數的最大值,2x+1表示無符號數最大值)。二者表示的資料範圍大小是相同的,但是範圍不同。

無符號整型和有符號整型的區別就是無符號型別可以存放的正數範圍比有符號整型中的範圍大一倍,因為有符號型別將最高位儲存符號,而無符號型別全都儲存數字。

9樓:匿名使用者

整型有無符bai號(duunsigned)和有符號(signed)兩種zhi型別;

在預設情況dao下宣告的整型變數都內是容有符號的型別(char有點特別),如果需宣告無符號型別的話就需要在型別前加上unsigned。

無符號數只表示大小,有符號數最高位(二進位制情況下最高位表示符號位),在同一作業系統下,有符號數和無符號數的最大數值在大小上的關係是2x+1(x表示有符號數的最大值,2x+1表示無符號數最大值)。

二者表示的資料範圍大小是相同的,但是範圍不同。

無符號整型和有符號整型的區別就是無符號型別可以存放的正數範圍比有符號整型中的範圍大一倍,因為有符號型別將最高位儲存符號,而無符號型別全都儲存數字。

10樓:無敵黑熊貓

有符號和無符號的記憶體用量不同,有符號需要更多的記憶體來記錄正負範圍。一般開發不用區別他們,統一用一種就好了。

11樓:匿名使用者

以來int為例

int 為2個位元組

有符號整型數自

據 數的範圍 -32768~32767

01111111111111111 最左邊的一位,這裡是0表示是正數,如是1就是負數.

無符號資料型別 數的範圍 0~65535

01111111111111111 最左邊的一位,這裡是0表示是正數,如是1也是正數.

12樓:四海為家的魚

一個來int型的變

量值的範自圍為-32678~32767

有符號整型變數 [signed]int 的取值範圍為-32678~32767,它的儲存

單元中最高位代表符號(0為正,1為負)

無符號整型變數 unsigned int取值範圍為0~65535,它的儲存單元只能儲存不帶符號的整數(正整數)

整型資料在記憶體中是以二進位制形式存放。

區別:int型的儲存單元中的最高位代表的是符號unsigned int型的儲存單元中最高位代表的是該資料的第一位;

無符號整數和有符號整數怎麼區分?

13樓:angela韓雪倩

有無符號的整數,在計算機記憶體中是區別不出有無符號的,而是在程式裡有區分。計算機中資料是以補碼形式存放的,用二進位制表示。比如:

預設無符號型,只要在型別符號加unsigned就是無符號型,int是有符號的。其實說白了就是:定義帶符號整數的,則可以儲存正負整數,定義無符號整數的,則只可以儲存正整數。

拓展資料:

計算機裡的數是用二進位制表示的,最左邊的這一位一般用來表示這個數是正數還是負數,這樣的話這個數就是有符號整數。如果最左邊這一位不用來表示正負,而是和後面的連在一起表示整數,那麼就不能區分這個數是正還是負,就只能是正數,這就是無符號整數。

計算機中的整數分為兩類:不帶符號位的整數(unsigned integer,也稱為無符號整數),此類整數一定是正整數;帶符號位的整數(signed integer),此類整數可以表示正整數,又可以表示負整數。

有符號和無符號的差別:

int是有符號的,unsigned是無符號的。

它們所佔的位元組數其實是一樣的,但是有符號的需要安排一個位置來表達我這個數值的符號,因此說它能表示的絕對值就要比無符號的少一半。舉個例子,我們有一個1個 [1]  位元組的整數(雖然這種型別不存在),那麼無符號的就是這樣:00000000~11111111 這個就是無符號的範圍。

一個位元組是8位, 有符號的數,因為第一個位要用來表示符號,那麼就只剩下7個位置可以用來表示數了0000000~1111111因為有符號,所以還可以表示範圍:-1111 111 ~ +1111 111。

14樓:

11111111 為二進位制表示 255,這不用解釋什麼。

表示負數時,就是用二的補碼錶示法。

負數的二的補碼為「本身的反碼加1」,有:

(1)1111111,符號位1表示負數

就要按上面的逆運算進行

除去符號位的七位(1111111),先減1得1111110。

求反碼,得0000001,

代入符號,得-1

另外一個例子:

10101010表示多少呢?

同上面步驟

符號位1,負數。

0101010 先減1,得0101001,求反碼,得1010110,(64+16+4+2=86)代入符號,得-86

(我本2樓)

怎麼區分,是由最終怎麼使用這個資料來決定,如果作為無符號,就是255,如果看成有符號就是-1。由人為的協議規定,在高階語言中由變數的型別來標識出。

如果看成「有符號」整型,標誌位是區分的標誌。

符號和,符號有什麼區別,包含符號是什麼,真包含符號是什麼?和假包含的區別是什麼,分別舉例

飾璦 逗號 句子內部主語與謂語之間如需停頓,用逗號。例如 我們看得見的星星,絕大多數是恆星。句子內部動詞與賓語之間如需停頓,用逗號。例如 應該看到,科學需要一個人貢獻出畢生的精力。句子內部狀語後邊如需停頓,用逗號。例如 對於這個城市,他並不陌生。複句內各分句之間的停頓,除了有時要用分號外,都要用逗號...

在物理中物理量符號和單位符號有什麼不同

你好,在物理裡面所有的物理量都有符號來表示,它們的單位也用符號來表示。物理量的符號,有大寫的也有小寫的。比如功率的符號用大寫的p,質量的符號用小寫的m 物理量的單位的符號,有大寫的也有小寫的。比如電流的單位是安培,用大寫a表示,時間的單位是秒,用小寫s表示。至於你說到的w,如果是表示物理量的話,那麼...

字串與無符號字元陣列有什麼區別

c語言字元陣列和字串的區別,字元陣列是一個儲存字元的陣列,而字串是一個用雙括號括起來的以 0 結束的字元序列,雖然字串是儲存在字元陣列中的,但是一定要注意字串的結束標誌是 0 總的來說是沒有區別的,字串就是以字元陣列形式儲存的。可以把一個字串看成是一個字元陣列,可以按陣列那樣操作。兩者沒有本質的區別...