C語言有符號和無符號的有什麼不同啊

2021-05-17 10:01:07 字數 1757 閱讀 9852

1樓:匿名使用者

有符號數如果高位為1,則為負數的補碼。對於一個有符號整數,c編譯程式將把該值(二進位制**)的最高位作為符號標誌位(符號標誌位是0,表示正數;為1,表示負數)

2樓:匿名使用者

比如說整bai型變數吧。unsigned int 是從du0到2的zhi32次方dao減1,而signed int 是專

從負2的31次方到正2的31次方減1.

在計算機裡,整型變數佔用屬4位元組,也就是32位的儲存空間。對於有符號數來說,正負號要單獨佔一位。所以除去符號位以外,數的絕對值就佔31位。這就是有符號和無符號的區別。

在c語言中關於有符號和無符號資料是怎麼運算的

3樓:匿名使用者

unsigned char a =10;

signed char b = -20;

//計算的時候

a = 0x0a;

b = 0xec;//轉換為int計算,c語言的規定a --> 0x000000 0a;

b --> 0xffffff ec;

a + b = 0xffffff f6;//結果是int型的//用其它型別 接收

,相應的轉換就是

4樓:匿名使用者

1、有符號數:

有符號數是針對二進位制來講的。用最高位作為符號位,「0」代表「+」,「1」代表「-」;其餘數位用作數值位,代表數值。有符號數的表示:

計算機中的資料用二進位制表示,數的符號也只能用0/1表示。一般用最高有效位(mbs)來表示數的符號,正數用0表示,負數用1表示。有符號數的編碼方式,常用的是補碼,另外還有原碼和反碼等。

用不同二進位制編碼方式表示有符號數時,所得到的機器數可能不一樣,但是真值應該是相同的。

2、無符號數:

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

無符號數與有符號數相對c支援所有整形資料型別的有符號數和無符號數運算。儘管c標準並沒有指定某種有符號數的表示,但是幾乎所有的機器都使用二進位制補碼。通常,大多數數字預設都使有符號的,c也允許無符號數和有符號數之間的轉換,轉換原則是基本的位表示保持不變。

因此在一臺二進位制補碼機器上,當從無符號數轉換為有符號數時,效果就是應用u2tw,而從有符號轉換為無符號數時,就是應用函式t2uw,其中w表示資料型別的位數。其中:

t2uw(x) = (x<0)?(x+2w) :x;

u2rw(x) = (x<2w-1)?x:(x-2w);

5樓:顯示卡色彩校正器

計算的結果型別會是int或者float。

在執行運算時,編譯器會要求將資料型別統一,也就是強制轉換成相同切精度增加或不變的資料型別。例如:對於int 和unsigned int, 處理器會將後者轉換為前者,再進行加減運算。

而當運算可能出現小數時(整數除法),兩個資料會被轉換成float,然後進行運算,輸出float的結果。

6樓:匿名使用者

cpu內部用標誌位來區分有無符號 一個數值在cpu內部都是二進位制表示同時代表兩個值

7樓:柯西and黎曼

推薦看看這篇部落格c語言中無符號數和有符號數之間的運算

8樓:匿名使用者

-30.................................

9樓:匿名使用者

int的~~~~~~~~~~~~~~

無符號整數和有符號整數怎麼區分,無符號數和有符號數在彙編程式裡如何區分?

有無符號的整數,在計算機記憶體中是區別不出有無符號的,而是在程式裡有區分。計算機中資料是以補碼形式存放的,用二進位制表示。比如 預設無符號型,只要在型別符號加unsigned就是無符號型,int是有符號的。其實說白了就是 定義帶符號整數的,則可以儲存正負整數,定義無符號整數的,則只可以儲存正整數。拓...

c語言中為什麼左移不分符號數無符號數,而右移分呢

因為在c語言標準中bai,只du規定了無符號數的移zhi位操作是採用邏輯dao移位 即左移 右移都是使回用的邏輯答左移和邏輯右移 而對於有符號數,其左移操作還是邏輯左移,但右移操作是採用邏輯右移還是算術右移就取決於機器了!算術右移和邏輯右移的區別是 算術右移不右移符號位,即最高位,右移後前補0還是1...

各種符號的意義,C語言各類符號意義以及用法

搜狗輸入法按快捷鍵 ctrl shift b,左邊特殊符號 特殊符號 倒數第三行。就是了。希望有幫助。送常用標點打法 五角星 wjx 圓圈 yq 菱形 lx 方塊 fk 三角形 sjx 五角星 wjx 圓圈 yq 菱形 lx 方塊 fk 三角形 sjx 空格 kg 逗號 dh 句號 jh 圓點 yd...