正數數值範圍

2021-05-23 02:59:23 字數 847 閱讀 6125

這得從二進位制的原碼說起:

如果以最高位為符號位,二進位制原碼最大為0111111111111111=2的15次方減1=32767

最小為1111111111111111=-2的15次方減1=-32767

此時0有兩種表示方法,即正0和負0:0000000000000000=1000000000000000=0

所以,二進位制原碼表示時,範圍是-32767~-0和0~32767,因為有兩個零的存在,所以不同的數值個數一共只有2的16次方減1個,比16位二進位制能夠提供的2的16次方個編碼少1個。

但是計算機中採用二進位制補碼儲存資料,即正數編碼不變,從0000000000000000到0111111111111111依舊表示0到32767,而負數需要把除符號位以後的部分取反加1,即-32767的補碼為1000000000000001。

到此,再來看原碼的正0和負0:0000000000000000和1000000000000000,補碼表示中,前者的補碼還是0000000000000000,後者經過非符號位取反加1後,同樣變成了0000000000000000,也就是正0和負0在補碼系統中的編碼是一樣的。但是,我們知道,16位二進位制數可以表示2的16次方個編碼,而在補碼中零的編碼只有乙個,也就是補碼中會比原碼多乙個編碼出來,這個編碼就是1000000000000000,因為任何乙個原碼都不可能在轉成補碼時變成1000000000000000。所以,人為規定1000000000000000這個補碼編碼為-32768。

所以,補碼系統中,範圍是-23768~32767。

因此,實際上,二進位制的最小數確實是1111111111111111,只是二進位制補碼的最小值才是1000000000000000,而補碼的1111111111111111是二進位制值的-1。

mysql數值範圍

時間資料型別轉換為int處理更快 201204 select date format 2008 08 08 22 23 01 y m d h i s int 20 是最大的 int 30 也是int 20 預設為最大值 1.bit m 位欄位型別,m表示每個值的位數,範圍從1到64,如果m被忽略,預...

單行函式(數值函式)

單行函式指的是完成某一具體功能的操作函式,例如 轉大寫,或改變日期格式 單行函式的格式 返回值 函式名稱 引數 單行函式格式可以分為以下幾種 字串函式 數值函式 日期函式 字串函式主要處理字串資料 對於字串的資料可能從列上找的的,或者是直接設定的字串常量 no 函式名稱 描述 1 字串upper 列...

Oracle函式 數值函式

1 abs n 函式 返回數字的絕對值 select abs 7 from dual 結果 7 2 sign x 函式 檢測x的正負.如果x 0返回 1.如果x 0返回0.如果x 0返回1.select sign 7 from dual 結果 1 3 ceil n 函式 返回大於或等於n的最小的整數...