有符號數和無符號數的範圍

2021-07-13 08:15:58 字數 965 閱讀 6479

參考這篇文章

無符號數:最高位不用來表示正負,它沒有負數,比如,4位無符號數表示的範圍,0000-1111,大小即0-15,

有符號數:最高位用來表示正負,

對於有符號數表示的範圍我們要著重談一下,4位有符號數,負數最小值很多人認為是1111(即-6),然而並不是,

我們先把4位有符號數大概全部都寫出來是這樣的1111-1000-0000-0111,即從負數到0再到正數,

然而有木有發現這其中有兩個0,1000和0000,都表示0

為了搞清楚這個玩意,我們要引入原碼反碼補碼

數值在計算機中的表示都是用補碼來表示的,所以計算機的加減法都是補碼的加減法,比如

[+1] = [00000001]原 = [00000001]反 = [00000001]補

[-1] = [10000001]原 = [11111110]反 = [11111111]補

我們用的各種進製的表示只是數值的表達,

1-1 = 1 + (-1) = [0000 0001]原 + [1000 0001]原 = [0000 0001]補 + [1111 1111]補 = [0000 0000]補=[0000 0000]原

根據這個我們知道

(-1) + (-127) = [1000 0001]原 + [1111 1111]原 = [1111 1111]補 + [1000 0001]補 = [1000 0000]補

所以1000表示的是-1-6=-7,而0000表示的是0

所以4位有符號數表示範圍是-7-6

8位有符號表示範圍是-128-127

16位範圍是-32768-32767

對於運算溢位

有符號數和無符號數

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

無符號數和有符號數

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

有符號數和無符號數

刷題刷到了有符號數的問題,回顧一下知識點 有符號數 signed 可以區分正負數 最高位表示數值的正負 0表示正數,1表示負數 無符號數 unsigned 不區分正負數 只有整數型別 雖然無符號數所能表示的最大數值大於有符號數,但兩者所能表示的數值範圍相同。eg.short int 128,0 0,...