有符號數和無符號數

2021-10-05 02:40:24 字數 667 閱讀 3072

刷題刷到了有符號數的問題,回顧一下知識點

有符號數(signed),可以區分正負數;最高位表示數值的正負(0表示正數,1表示負數)

無符號數(unsigned),不區分正負數(只有整數型別)

雖然無符號數所能表示的最大數值大於有符號數,但兩者所能表示的數值範圍相同。

eg.short int :[-128,0),[0,127]

unsigned short int:[0,255]

當表示式中存在有符號數和無符號數型別時,所有的操作都自動轉換為無符號型別。可見無符號數的運算優先順序高於有符號數。

short int:8位(2位元組);

int:16位(4位元組);

long int:16位;

long long int:32位;

c++的標準並沒有規定每種型別佔多少位,只是說 「sizeof(long)>=sizeof(int)>=sizeof(short)」,所以具體的位元組數都是根據編譯器來確定的。

原碼:乙個整數,按照絕對值的大小轉換成二進位制數,最高位為符號位。

反碼:將原碼除最高位(符號位)外,其餘各位按位取反,所得到的二進位製碼。正數的反碼為原碼。

補碼:反碼最低位加1即為補碼。正數的補碼為原碼。

心算求補:從最低位開始至找到的第乙個1均不變,符號位不變,這之間的各位「求反」(0變1;1變0)。

有符號數和無符號數

有符號和無符號整數 1.通常情況下,大多數字預設的是有符號數,比如 4,5 要想寫乙個無符號數必須在後面加u 比如 4u,5u 2.在計算機中有符號數是用補碼的形式來表示的,最高位是符號位。無符號數就是正數唄 正數的補碼和原碼相同。比如 1 在計算機中表示為 11111111 11111111 11...

無符號數和有符號數

人有十個手指頭,習慣了逢十進一,於是十進位製成了生活中的標準。程式的世界只有高低電平兩種狀態,更適合用二進位制來表示,於是二進位製成了程式世界的標準。對與無符號數來說,我們更喜歡談他們之間的轉化,十進位制是我們最習慣的進製,於是十進位制轉為r進製,r進製轉為十進位制變尤為重要。十進位制 r進製 整數...

C 有符號數和無符號數

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