第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

為什么 bigInteger 沒(méi)有 -1 的位長(zhǎng)度?

為什么 bigInteger 沒(méi)有 -1 的位長(zhǎng)度?

郎朗坤 2023-09-13 17:00:54
為什么在Java中BigInteger.bitLength()打?。?-1System.out.println(BigInteger.valueOf(-1).bitLength());BigInteger 的源代碼中有一條注釋說(shuō):bitLength 尚未初始化public int bitLength() {        int n = bitLengthPlusOne - 1;        if (n == -1) { // bitLength not initialized yet            int[] m = mag;            int len = m.length;            if (len == 0) {                n = 0; // offset by one to initialize            }
查看完整描述

2 回答

?
茅侃侃

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超21個(gè)贊

檢查該方法的文檔BigInteger.bitLength()

返回此 BigInteger 的最小二進(jìn)制補(bǔ)碼表示形式的位數(shù),不包括符號(hào)位。[...]

您需要零個(gè)“值”位來(lái)表示 value?0?;旧?,你“不需要做任何事情”,你就有了價(jià)值0。使用符號(hào)位,您可以在0和之間切換-1(與補(bǔ)碼類似)。

當(dāng)您擁有需要一個(gè)“值”位的值時(shí)1,因此BigInteger.bitLength()將返回1BigInteger value?1。檢查以下for循環(huán)及其生成的輸出:

for (int i=-16; i<=16; i++) {

? ? BigInteger x = BigInteger.valueOf(i);

? ? System.out.println(x+"| bitlength: "+x.bitLength());? ??

}

輸出是:


-16| bitlength: 4

-15| bitlength: 4

-14| bitlength: 4

-13| bitlength: 4

-12| bitlength: 4

-11| bitlength: 4

-10| bitlength: 4

-9| bitlength: 4

-8| bitlength: 3

-7| bitlength: 3

-6| bitlength: 3

-5| bitlength: 3

-4| bitlength: 2

-3| bitlength: 2

-2| bitlength: 1

-1| bitlength: 0

0| bitlength: 0? /* 0b */

1| bitlength: 1? /* 0b1 */

2| bitlength: 2

3| bitlength: 2? /* 0b11 */

4| bitlength: 3

5| bitlength: 3

6| bitlength: 3

7| bitlength: 3? /* 0b111 */

8| bitlength: 4

9| bitlength: 4

10| bitlength: 4

11| bitlength: 4

12| bitlength: 4

13| bitlength: 4

14| bitlength: 4

15| bitlength: 4 /* 0b1111 */

16| bitlength: 5


查看完整回答
反對(duì) 回復(fù) 2023-09-13
?
臨摹微笑

TA貢獻(xiàn)1982條經(jīng)驗(yàn) 獲得超2個(gè)贊

返回最小的補(bǔ)碼(?1),不包括符號(hào)位,在本例中符號(hào)位為 0。-1 的二進(jìn)制值為0xFFFF.../?0b1111...,其補(bǔ)碼(最大值)變?yōu)?code>0,與 相加1成為二進(jìn)制補(bǔ)碼(補(bǔ)碼 + 1)。

但是,n變量 from#bitLength不是 BigInteger 的值,而是存儲(chǔ)的 bitLength 字段的值減 1(0這意味著尚未計(jì)算)。因此,返回aBigInteger的值與使用 -1 作為標(biāo)記值的它們是巧合的。-10#bitLength

他們使用這個(gè)值來(lái)表示該字段還沒(méi)有被延遲初始化,然后該bitLength字段被設(shè)置為正確的值(0)。請(qǐng)記住,BigInteger是不可變的,因此當(dāng)計(jì)算 bitLength 時(shí),它在該實(shí)例中永遠(yuǎn)不會(huì)改變。


查看完整回答
反對(duì) 回復(fù) 2023-09-13
  • 2 回答
  • 0 關(guān)注
  • 138 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)