無符號的整數
以原碼的形式存在於內存中,假如此整數占1個字節(為了簡化),從小到大為0-256,對應二進制為0000 0000 -- 1111 1111。
有符號的整數
正數以原碼的形式存在於內存中,負數以補碼的形式存在於內存中,正數從1-127,對應二進制為0000 0001--0111 1111;負數從小到大為-128到-1,1000 0000--1111 1111。
這樣做的原因是為了,1.避免了出現正0和負0這兩個相等的數字。2.可以將減法轉換成加法處理。1-1 0000 0001 + 1111 1111 = 0000 0000溢出位不管。
忘了它的類型
看看如何不通過中間變量去交換兩個變量的值我們不用去理會內存中的是什么類型的數據,僅僅是將內存中的二進制做一個交換。
a:1011 0010和b:0111 1100
a與b每位都做異或操作 a = a ^ b;a:1100 1110
a與b每位都做異或操作 b = a ^ b;b:0111 1100
a與b每位都做異或操作 a = a ^ b;a:1011 0010
這樣就完成了交換,不管是什么類型的值,不用理會它是什么類型的值,這樣都可以交換塊相同大小的內存塊的值。有時候有了我們賦予它類型太久了,忘了它僅僅是1010……了。
通過這種方式也可以實現一個簡單的對稱加密。