java addfirst_java – ArrayDeque类的addFirst方法
以下行的功能基本上是(head-1)MODULO(elements.length),因此當(dāng)head == 0時(shí),從head減去1將導(dǎo)致最大可能值而不是-1.
head = (head - 1) & (elements.length - 1)
10是元素的有效長(zhǎng)度,根據(jù)實(shí)現(xiàn),elements.length總是2的冪.如果不是這種情況,則操作無(wú)效.
了解其工作原理需要了解位操作.
假設(shè)elements.length == 16 == 00010000b并且為了簡(jiǎn)單起見(jiàn),值的長(zhǎng)度是8位而不是實(shí)際的32:
(elements.length – 1)用于獲得n位長(zhǎng)的位掩碼,其中2 ^ n是元素的當(dāng)前長(zhǎng)度. (elements.length – 1)== 15 == 00001111b在這種情況下.
如果頭> 0和頭< elements.length(給定),然后(head-1)& (elements.length - 1)==(head - 1),因?yàn)榕c1s的AND運(yùn)不起作用. 如果head == 0,head – 1 == -1 == 11111111b. (二進(jìn)制補(bǔ)碼有符號(hào)整數(shù)表示法,盡管你也可以將其視為一個(gè)簡(jiǎn)單的整數(shù)溢出.)與掩碼(head-1)& 00001111b == 11111111b& 00001111b == 00001111b == 15,這是想要的值.
總結(jié)
以上是生活随笔為你收集整理的java addfirst_java – ArrayDeque类的addFirst方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 逍遥安卓模拟器多开同步(逍遥安卓模拟器多
- 下一篇: java 指定打印机打印_java 指定