java中整数如何表示,在Java中如何在位级别上内部表示整数?
慕瓜9086354
Java整數(shù)為32位,并且總是帶符號的。這意味著,最高有效位(MSB)用作符號位。用an表示的整數(shù)int不過是位的加權(quán)和。權(quán)重分配如下:Bit#? ? Weight31? ? ? -2^3130? ? ? ?2^3029? ? ? ?2^29...? ? ? ...2? ? ? ? 2^21? ? ? ? 2^10? ? ? ? 2^0請注意,MSB的權(quán)數(shù)為負(fù)(實(shí)際上最大可能為負(fù)),因此,當(dāng)該位打開時(shí),整數(shù)(加權(quán)和)將為負(fù)。讓我們用4位數(shù)字對其進(jìn)行仿真:Binary? ? Weighted sum? ? ? ? ? ? Integer value0000? ? ? ?0 + 0 + 0 + 0? ? ? ? ? ?00001? ? ? ?0 + 0 + 0 + 2^0? ? ? ? ?10010? ? ? ?0 + 0 + 2^1 + 0? ? ? ? ?20011? ? ? ?0 + 0 + 2^1 + 2^0? ? ? ?30100? ? ? ?0 + 2^2 + 0 + 0? ? ? ? ?40101? ? ? ?0 + 2^2 + 0 + 2^0? ? ? ?50110? ? ? ?0 + 2^2 + 2^1 + 0? ? ? ?60111? ? ? ?0 + 2^2 + 2^1 + 2^0? ? ?7 -> the most positive value1000? ? ? -2^3 + 0 + 0 + 0? ? ? ? -8 -> the most negative value1001? ? ? -2^3 + 0 + 0 + 2^0? ? ? -71010? ? ? -2^3 + 0 + 2^1 + 0? ? ? -61011? ? ? -2^3 + 0 + 2^1 + 2^0? ? -51100? ? ? -2^3 + 2^2 + 0 + 0? ? ? -41101? ? ? -2^3 + 2^2 + 0 + 2^0? ? -31110? ? ? -2^3 + 2^2 + 2^1 + 0? ? -21111? ? ? -2^3 + 2^2 + 2^1 + 2^0? -1因此,二進(jìn)制補(bǔ)碼不是表示負(fù)整數(shù)的排他方案,而是可以說整數(shù)的二進(jìn)制表示始終相同,我們只是忽略了最高有效位的權(quán)重。該位確定整數(shù)的符號。在C中,有一個(gè)關(guān)鍵字unsigned(在Java中不可用),可用于聲明unsigned int x;。在無符號整數(shù)中,MSB的權(quán)重為正(2^31),而不為負(fù)。在這種情況下,an的范圍unsigned int是0to 2^32 - 1,而an的int范圍是-2^31to 2^31 - 1。從另一個(gè)角度來看,如果您考慮xas 的二的補(bǔ)碼~x + 1(NOT x加一),則說明如下:對于任何x,~x都只是的按位倒數(shù)x,因此,凡是x帶有1-bit的位置,~x都將帶有0-bit的位置(反之亦然)。因此,如果將它們加起來,則加法運(yùn)算中將不會有進(jìn)位,并且總和將只是一個(gè)整數(shù),其每一位均為1。對于32位整數(shù):x + ~x = 1111 1111 1111 1111 1111 1111 1111 1111x + ~x + 1 =? ?1111 1111 1111 1111 1111 1111 1111 1111 + 1? ? ? ? ? ?= 1 0000 0000 0000 0000 0000 0000 0000 0000最左邊的1位將被丟棄,因?yàn)樗贿m合32位(整數(shù)溢出)。所以,x + ~x + 1 = 0-x = ~x + 1因此,您可以看到負(fù)數(shù)x可以由表示~x + 1,我們稱它們?yōu)榈难a(bǔ)數(shù)x。
總結(jié)
以上是生活随笔為你收集整理的java中整数如何表示,在Java中如何在位级别上内部表示整数?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 宜春做输卵管手术最好的医院推荐
- 下一篇: 三星电视的产品质量如何