java如何使用移位运算符_JAVA移位运算符使用教程
位運(yùn)算符用來對(duì)二進(jìn)制位進(jìn)行操作,分為左移位操作和右移位操作。
左移位運(yùn)算符
●左移位運(yùn)算的符號(hào)為<
●特點(diǎn)
◆是雙目運(yùn)算符。
◆操作元必須是整型類型的數(shù)據(jù)。
●左位移的過程
◆假設(shè)a是一個(gè)被移位的整型數(shù)據(jù),n是位移量。
◆a<
◆比如:對(duì)整形數(shù) 8<<1的計(jì)算
8的二進(jìn)制表示: 0000,0000,0000,0000,0000,0000,0000,1000
左移一位的結(jié)果:0000,0000,0000,0000,0000,0000,0001,0000
●注意
◆左位移操作是對(duì)整型數(shù)的操作,操作符兩邊必須是整型。
◆比整型更小的數(shù)據(jù)類型數(shù)據(jù)將被轉(zhuǎn)換成整型進(jìn)行運(yùn)算,比整型更大的數(shù)據(jù)類型數(shù)據(jù)是不能進(jìn)行移位運(yùn)算的。
◆比整型更小的數(shù)據(jù)類型數(shù)據(jù)將被轉(zhuǎn)換成整型時(shí):對(duì)于正數(shù)將高位用0填充;負(fù)數(shù)將高位用1填充。
◆例:
byte a = -8;
System.out.println(a<<2);
結(jié)果:-32
1111,1111,1111,1111,1111,1111,1111,1000
↓
1111,1111,1111,1111,1111,1111,1110,0000
◆在進(jìn)行a<
★如果a是byte、short或int型數(shù)據(jù),系統(tǒng)總是先計(jì)算出n%32的結(jié)果m,然后進(jìn)行a<
★對(duì)于long型數(shù)據(jù),系統(tǒng)總是先計(jì)算出n%64的結(jié)果m,然后進(jìn)行a<
★比如:
對(duì)于int數(shù) 5<<1與5<<33的結(jié)果相等;
對(duì)于long數(shù) 5<<1與5<<65的結(jié)果相等。
右移位運(yùn)算符
右移位運(yùn)算的符號(hào)為>>,右移位運(yùn)算符左面的操作元稱作被移位數(shù),右面的操作數(shù)稱作移位量。
●特點(diǎn)
◆是雙目運(yùn)算符。
◆操作元必須是整型類型的數(shù)據(jù)。
●右位移的過程
◆假設(shè)a是一個(gè)被移位的整型數(shù)據(jù),n是位移量。
◆a>>n運(yùn)算的過程是通過將a的所有位都右移n位,每右移一個(gè)位,右邊的最低位(即右邊的第1位)上的0或1被移出丟棄,并用0或1填充左邊的高位(a是正數(shù)時(shí)用0填充,負(fù)數(shù)時(shí)用1填充)。
◆比如:對(duì)整形數(shù) 8>>1的計(jì)算
8的二進(jìn)制表示: 0000,0000,0000,0000,0000,0000,0000,1000
右移一位的結(jié)果:0000,0000,0000,0000,0000,0000,0000,0100
●注意
◆右位移操作是對(duì)整型數(shù)的操作,操作符兩邊必須是整型。
◆比整型更小的數(shù)據(jù)類型數(shù)據(jù)將被轉(zhuǎn)換成整型進(jìn)行運(yùn)算,比整型更大的數(shù)據(jù)類型數(shù)據(jù)是不能進(jìn)行移位運(yùn)算的。
◆比整型更小的數(shù)據(jù)類型數(shù)據(jù)將被轉(zhuǎn)換成整型時(shí):對(duì)于正數(shù)將高位用0填充;負(fù)數(shù)將高位用1填充。
◆例:
byte a = -8;
System.out.println(a>>2);
結(jié)果:-2
1111,1111,1111,1111,1111,1111,1111,1000
↓
1111,1111,1111,1111,1111,1111,1111,1110
◆在進(jìn)行a>>n運(yùn)算時(shí)
★如果a是byte、short或int型數(shù)據(jù),系統(tǒng)總是先計(jì)算出n%32的結(jié)果m,然后進(jìn)行a>>m運(yùn)算。
★對(duì)于long型數(shù)據(jù),系統(tǒng)總是先計(jì)算出n%64的結(jié)果m,然后進(jìn)行a>>m運(yùn)算。
★比如:
對(duì)于int數(shù) 5>>1與5>>33的結(jié)果相等;
對(duì)于long數(shù) 5>>1與5>>65的結(jié)果相等。
總結(jié)
以上是生活随笔為你收集整理的java如何使用移位运算符_JAVA移位运算符使用教程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 简单的python的socket编程实例
- 下一篇: 这个1500个+Javascript特效