1. 程式人生 > 其它 >重寫文字框JTextField新增圖示

重寫文字框JTextField新增圖示

整數的表示

以下以單位元組表示數為例

無符號數

對於無符號整數,一個位元組最多可以表示256個整數:[0~255]

有符號整數

對於有符號的整數,則需要佔用1位最高位作為符號位,此後7位可表示128位整數:[0~127]

對於有符號整數的表示共有三種表示方法:

原碼(符號絕對值法)

原碼將最高位作為符號位(0表示正,1表示負):[-127~127]

注意到,此時存在+0-0兩個0

反碼

反碼同樣將最高位作為符號位(0表示正,1表示負),但互為相反數的兩個數,各位的值相反:

例:+6表示為:0000 0110

​ -6表示為:1111 1001(而原碼是:1000 0110)

總結:整數的反碼是原碼本身,而負數的反碼是原碼的符號位不變,其它位取反。

注意到,由於存在互為相反數的關係,因此同樣存在+0(0000 0000)和

-0(1111 1111)兩個0

補碼

補碼仍然採用最高位作為符號位(0表示正,1表示負),正數的補碼還是它本身,負數的補碼分兩步:1. 先求出該負數的反碼 2. 在反碼的基礎上+1

此時,+0(0000 0000)和-0(0000 0000)表示相同,而原來表示 -0 的

1000 0000(原碼錶示)或 1111 1111(反碼錶示,此時已有對應的補碼值:-1)。

那麼,1000 0000是哪個負數的補碼呢?我們逆推一下:

求反碼為:1000 0000 - 1 = 0111 1111

求原碼為:0000 0000

顯然,他不是一個負數(因為一個負數的符號位為1),根據對稱性我們也可以知道,8位可以表示位256(偶數)個數,但補碼錶示法的 +0 和 -0 只有一種表示法,因此,勢必會多出來一個數(沒錯,就是1000 0000),我們當然可以用他表示為-0(讓0000 0000表示+0),或者128或用作其他用途、

總結:正數的補碼是它的本身,負數的補碼是它的反碼加1(即:原碼的符號位不變,其它位取反後加1)。