int與uint轉換過程中值的變化

2021-05-21 18:31:29 字數 693 閱讀 2948

int型別的資料轉化為uint型別:

因為int是帶符號的型別,當int是正數時,int型別資料轉化為uint時不發生改變。

當int是負數時,int型別資料轉化為uint型別時,值就要發生變化。

但轉化的過程並不是去掉前面的負號,例如

int a=-1;

uint b=(uint)a;

這時b的結果並不是1;而是4294967295;

我們知道在計算機中儲存資料都是用補碼來儲存的,int的大小是4個位元組,也就是32位,並且第一位是符號位;

而uint的大小同樣是4個位元組,32位,但沒有符號位。

所當int a=-1;在計算機中儲存的是補碼:1111 1111 1111 1111;第一位是符號位。

執行uint b=(uint)a;轉化為uint型別時,儲存的依然是補碼:1111 1111 1111 1111;沒有符號位。

這時值就變成了4294967295。

程式:static void main(string args)

console.writeline("int型別的最大值為:"+sum);//0111 1111 1111 1111 結果為2147483647

sum++;

console.writeline("int型別的最小值為:"+sum);//1000 0000 0000 0000 結果為-2147483648

}

Hive HQL的轉換過程

二 具體轉化過程 一 hive的執行過程概述 操作符列表 hive 編譯器的工作職責 優化器的型別 帶 符號的,優化目的都是盡量將任務合併到乙個 job 中,以減少 job 數量,帶 的 優化目的是儘量減少 shuffle 資料量 二 具體轉化過程 1 join select pv.pageid,u...

uint與int數值的比較

最近一段時間太忙了,又要每天筆試面試,又要寫專利,實在沒時間坐下來好好看會書,平常遇到了些問題也沒時間記錄下來,當然這都是藉口,唉,言歸正傳,這次想記錄的是平常都沒有考慮到的乙個筆試題中的問題,就是有次同學筆試的時候讓我幫忙,問我 int d 1 int arr if d會輸出什麼?一開始我也想不通...

c 中將uint值轉換成int的例項方法

c 中的uint是無符號整數型別,int是有符合整數型別。兩者的取值範圍不相同,那麼,如何將uint值轉換為int呢?開啟visual studio,建立乙個控制台應用程式,本文的所有 都在program.cs檔案的main方法中進行演示。首先檢視uint無符號整數型別的最大值 uint.maxva...