有符号与无符号数强转的可逆性
生活随笔
收集整理的這篇文章主要介紹了
有符号与无符号数强转的可逆性
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
有符號與無符號數強轉的可逆性
1 static void TestTypeConvert() 2 {//把一個有符號數轉為無符號后再轉回來值保持不變,以下以1字節為例 3 //原理:計算機中符點數都是有符號的,不存在這種轉變,只剩下整數, 4 //真值:絕對值的二進制值,如-1的真值為 00000001 5 //整數是以補碼形式存放的,計算機規定了正數的補碼是本身,負數的補碼是:符號位不變,真值按位取反再加1 6 //強制轉換做的事就是把一個補碼看成是有符號還是無符號 7 //有符號數,在計算時:符號位不變,真值按位取反再加1。無符號數直接計算,舉例如下: 8 //1,-1 的真值為00000001,補碼為 1 111 1111,強轉時就是把補碼值看作是一個無符數,因此它=255 9 //,再次強轉時把它看成有符號數,符號位不管,其余位按位取反加1后是1,因此再次轉回了-1 10 //2,-2 的真值為00000010,補碼為 1 111 1110,強轉時把補碼看作無符號數,因此它=254 11 //3,-128真值有點特殊,128的二進制碼為1000 0000,第8位是符號位,舍棄,取后面的0,即-128的真值為0 12 //補碼經按位取反加1后還是 1 000 0000,強轉時看成無符號數即為128 13 sbyte sb = -128; 14 var b = (byte)(sb); 15 var sb1 = (sbyte)(b); 16 }?
posted on 2017-11-21 11:30 時空觀察者9號 閱讀(...) 評論(...) 編輯 收藏
總結
以上是生活随笔為你收集整理的有符号与无符号数强转的可逆性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 杂记2017.10.16
- 下一篇: C#模板的效率问题