Uint?和?int?的區(qū)別解析
Uint 和 int 的區(qū)別
一、指代不同
1、uint:對應于無符號整數(shù)。
2、int:一種數(shù)據(jù)類型,在編程語言(C、C++、C#、Java等)中,是用于定義整數(shù)類型變量的標識符。
二、取值范圍不同
1、uint:取值范圍是 2^31 - 1,即:0~4294967295。
2、int:int占用4字節(jié),32比特,數(shù)據(jù)范圍為-2147483648~2147483647[-2^31~2^31-1]。
三、特點不同
1、uint:有無符號的根本原因就是因為數(shù)據(jù)出現(xiàn)了溢出現(xiàn)象導致的。無符號值可以避免誤存負數(shù), 且擴大了表示范圍。
2、int:除了int類型之外,還有short、long、long long類型可以表示整數(shù)。
補充:uint與int互轉(zhuǎn)
Int與Uint的區(qū)別在于帶符號與不帶符號,在計算機中根據(jù)補碼進行互相轉(zhuǎn)換,很多語言是有方法支持的,但是也有一些并沒有轉(zhuǎn)換方法,比如SQLserver(SQLserver不支持Uint類型),下面這個方法理論上可以運用于任何語言進行轉(zhuǎn)換。
SQLserver中并不存在uint,所以我們用bigint格式來接收轉(zhuǎn)換后的數(shù)據(jù)
int→uint如果為正數(shù):數(shù)據(jù)(正數(shù)不變)
如果為負數(shù):MaxInt-MinInt-(|數(shù)據(jù)|)+1 = 2147483647-(-2147483648)+(數(shù)據(jù))+1 = 4294967296+(數(shù)據(jù))
SQL代碼:
DECLARE @int INT =-1 SELECT CASE WHEN @int>=0 THEN @int ELSE 4294967296+@int END
JS代碼:
function int2uint(i) { if (i >= 0) return i; else 4294967296 + i; }
uint→int如果小于等于MaxInt:數(shù)據(jù)(不變)
如果大于MaxInt:(數(shù)據(jù))-MaxInt+MinInt-1=(數(shù)據(jù))-2147483647+(-2147483648)-1=(數(shù)據(jù))-4294967296
SQL代碼:
DECLARE @uint BIGINT=4294967295 SELECT CASE WHEN @uint<=2147483647 THEN @uint ELSE @uint-4294967296 End
JS代碼:
function uint2int(i) { if (i <= 2147483647) return i; else return i - 4294967296 }
到此這篇關于Uint 和 int 的區(qū)別的文章就介紹到這了,更多相關Uint 和 int 的區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
jenkins通過sshPut傳輸文件時報錯Permission?denied的SftpException的問題及解決
使用jenkins的ssh插件傳輸文件至遠程機器的指定目錄,php程序打包后,經(jīng)過zip壓縮為oms.zip,這篇文章主要介紹了jenkins通過sshPut傳輸文件的時候,報錯Permission?denied的SftpException,需要的朋友可以參考下2023-08-08Web前端和JAVA應該學哪個?哪個就業(yè)形勢更勝一籌?
這篇文章主要介紹了Web前端和JAVA應該學哪個?哪個就業(yè)形勢更好?本文通過幾個城市的薪資收入對比分析,需要的朋友可以參考下2020-07-07Typora?免費版下載安裝入門使用教程(超簡單親測適用于Windows)
Typora是一款輕便簡潔的Markdown編輯器,支持即時渲染技術(shù),這也是與其他Markdown編輯器最顯著的區(qū)別,這篇文章主要介紹了Typora?免費版下載安裝(超簡單親測適用于Windows)與入門,需要的朋友可以參考下2023-09-09bs架構(gòu)和cs架構(gòu)的區(qū)別_動力節(jié)點Java學院整理
這篇文章主要介紹了bs架構(gòu)和cs架構(gòu)的區(qū)別,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07