新聞中心
JavaScript中常用符號集合?
如下:
網(wǎng)站的建設(shè)成都創(chuàng)新互聯(lián)公司專注網(wǎng)站定制,經(jīng)驗豐富,不做模板,主營網(wǎng)站定制開發(fā).小程序定制開發(fā),H5頁面制作!給你煥然一新的設(shè)計體驗!已為PVC花箱等企業(yè)提供專業(yè)服務(wù)。
==,===相等運算符
!=,!==不等式運算符
= 賦值運算符
,||,!邏輯運算符
() 分組運算符
, 逗號運算符
?…: 條件(三元)運算符
|,,^,~按位OR,AND,XOR和NOT運算符
,, 位移位運算符
+,-運算符
++,--前/后增/減運算符
void operator
var x = function()? vs function x()函數(shù)聲明語法
= 箭頭函數(shù)表達式語法
(function(){...})()IIFE (立即調(diào)用函數(shù)表達式)
someFunction()() 返回其他功能的功能
[],Array()數(shù)組符號
/.../ -正則表達式文字
$在正則表達式替換模式:$$,$,$,$’,$n`
{key: value} 對象文字語法:
可選的鏈接運算符(foo?.bar?.baz):
空位合并運算符(??)
function*,yield,yield* Declaring variables:
var,let,const變量聲明:
this 關(guān)鍵詞:
:: 綁定運算符:
new operator
delete operator
label: 標簽
+=Operator
...iter 傳播語法/ Rest參數(shù)
| Operator
** Power Operator
JS控制圖片向左向右移動的代碼
這段代碼可以: !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " " html xmlns=" " head meta http-equiv="Content-Type" content="text/html; charset=gb2312" / title圖片/title script language="javascript" !-- //圖片滾動列表 mengjia 070927 var Speed_1 = 10; //速度(毫秒) var Space_1 = 20; //每次移動(px) var PageWidth_1 = 116 * 3; //翻頁寬度 var interval_1 = 7000; //翻頁間隔 var fill_1 = 0; //整體移位 var MoveLock_1 = false; var MoveTimeObj_1; var MoveWay_1="right"; var Comp_1 = 0; var AutoPlayObj_1=null; function GetObj(objName){if(document.getElementById){return eval('document.getElementById("'+objName+'")')}else{return eval('document.all.'+objName)}} function AutoPlay_1(){clearInterval(AutoPlayObj_1);AutoPlayObj_1=setInterval('ISL_GoDown_1();ISL_StopDown_1();',interval_1)} function ISL_GoUp_1(){if(MoveLock_1)return;clearInterval(AutoPlayObj_1);MoveLock_1=true;MoveWay_1="left";MoveTimeObj_1=setInterval('ISL_ScrUp_1();',Speed_1);} function ISL_StopUp_1(){if(MoveWay_1 == "right"){return};clearInterval(MoveTimeObj_1);if((GetObj('ISL_Cont_1').scrollLeft-fill_1)%PageWidth_1!=0){Comp_1=fill_1-(GetObj('ISL_Cont_1').scrollLeft%PageWidth_1);CompScr_1()}else{MoveLock_1=false} AutoPlay_1()} function ISL_ScrUp_1(){if(GetObj('ISL_Cont_1').scrollLeft=0){GetObj('ISL_Cont_1').scrollLeft=GetObj('ISL_Cont_1').scrollLeft+GetObj('List1_1').offsetWidth} GetObj('ISL_Cont_1').scrollLeft-=Space_1} function ISL_GoDown_1(){clearInterval(MoveTimeObj_1);if(MoveLock_1)return;clearInterval(AutoPlayObj_1);MoveLock_1=true;MoveWay_1="right";ISL_ScrDown_1();MoveTimeObj_1=setInterval('ISL_ScrDown_1()',Speed_1)} function ISL_StopDown_1(){if(MoveWay_1 == "left"){return};clearInterval(MoveTimeObj_1);if(GetObj('ISL_Cont_1').scrollLeft%PageWidth_1-(fill_1=0?fill_1:fill_1+1)!=0){Comp_1=PageWidth_1-GetObj('ISL_Cont_1').scrollLeft%PageWidth_1+fill_1;CompScr_1()}else{MoveLock_1=false} AutoPlay_1()} function ISL_ScrDown_1(){if(GetObj('ISL_Cont_1').scrollLeft=GetObj('List1_1').scrollWidth){GetObj('ISL_Cont_1').scrollLeft=GetObj('ISL_Cont_1').scrollLeft-GetObj('List1_1').scrollWidth} GetObj('ISL_Cont_1').scrollLeft+=Space_1} function CompScr_1(){if(Comp_1==0){MoveLock_1=false;return} var num,TempSpeed=Speed_1,TempSpace=Space_1;if(Math.abs(Comp_1)PageWidth_1/2){TempSpace=Math.round(Math.abs(Comp_1/Space_1));if(TempSpace1){TempSpace=1}} if(Comp_10){if(Comp_1-TempSpace){Comp_1+=TempSpace;num=TempSpace}else{num=-Comp_1;Comp_1=0} GetObj('ISL_Cont_1').scrollLeft-=num;setTimeout('CompScr_1()',TempSpeed)}else{if(Comp_1TempSpace){Comp_1-=TempSpace;num=TempSpace}else{num=Comp_1;Comp_1=0} GetObj('ISL_Cont_1').scrollLeft+=num;setTimeout('CompScr_1()',TempSpeed)}} function picrun_ini(){ GetObj("List2_1").innerHTML=GetObj("List1_1").innerHTML; GetObj('ISL_Cont_1').scrollLeft=fill_1=0?fill_1:GetObj('List1_1').scrollWidth-Math.abs(fill_1); GetObj("ISL_Cont_1").onmouseover=function(){clearInterval(AutoPlayObj_1)} GetObj("ISL_Cont_1").onmouseout=function(){AutoPlay_1()} AutoPlay_1(); } //產(chǎn)品展示滾動圖片結(jié)束 //-- /script style type="text/css" !-- BODY { BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 12px; BORDER-BOTTOM-WIDTH: 0px; MARGIN: 0px; FONT-FAMILY: 宋體; BACKGROUND-COLOR: #fff; BORDER-RIGHT-WIDTH: 0px } .blk_18 { BORDER-RIGHT: #e3e3e3 1px solid; BORDER-TOP: #e3e3e3 1px solid; MARGIN-TOP: 8px; FONT-SIZE: 12px; BACKGROUND: #f3f3f3; OVERFLOW: hidden; BORDER-LEFT: #e3e3e3 1px solid; WIDTH: 390px; BORDER-BOTTOM: #e3e3e3 1px solid; ZOOM: 1 } .blk_18 .pcont { FLOAT: left; OVERFLOW: hidden; WIDTH: 350px } .blk_18 .ScrCont { WIDTH: 32766px; ZOOM: 1 } .blk_18 #List1_1 { FLOAT: left } .blk_18 #List2_1 { FLOAT: left } .blk_18 .LeftBotton { BACKGROUND: url( ) no-repeat; FLOAT: left; MARGIN: 10px 1px; WIDTH: 15px; HEIGHT: 72px } .blk_18 .RightBotton { BACKGROUND: url( ) no-repeat; FLOAT: left; MARGIN: 10px 1px; WIDTH: 15px; HEIGHT: 72px } .blk_18 .LeftBotton { BACKGROUND-POSITION: 0px 0px; MARGIN-LEFT: 5px } .blk_18 .RightBotton { BACKGROUND-POSITION: 0px -100px; MARGIN-LEFT: -1px } .blk_18 .LeftBotton:hover { BACKGROUND-POSITION: -20px 0px } .blk_18 .RightBotton:hover { BACKGROUND-POSITION: -20px -100px } .blk_18 .pl IMG { DISPLAY: block; MARGIN: 6px auto 1px; CURSOR: pointer; BORDER-TOP-STYLE: none; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BORDER-BOTTOM-STYLE: none } .blk_18 .pl { BORDER-RIGHT: #f3f3f3 1px solid; BORDER-TOP: #f3f3f3 1px solid; FLOAT: left; BORDER-LEFT: #f3f3f3 1px solid; WIDTH: 114px; LINE-HEIGHT: 24px; BORDER-BOTTOM: #f3f3f3 1px solid; TEXT-ALIGN: center; TEXT-DECORATION: underline } .blk_18 A.pl:hover { BORDER-RIGHT: #ff9900 1px solid; BORDER-TOP: #ff9900 1px solid; BACKGROUND: #fff; BORDER-LEFT: #ff9900 1px solid; COLOR: #ff9900; BORDER-BOTTOM: #ff9900 1px solid } .commu_cont3 { MARGIN: 9px 7px 7px; LINE-HEIGHT: 150% } .commu_cont3 UL { WIDTH: 188px } -- /style /head body !-- picrotate_left start -- DIV class=blk_18A onmouseup=ISL_StopUp_1() class=LeftBotton onmousedown=ISL_GoUp_1() onmouseout=ISL_StopUp_1() href="javascript:void(0);" target=_self/A DIV class=pcont id=ISL_Cont_1 DIV class=ScrCont DIV id=List1_1!-- piclist begin --A class=pl href=" " target=_blankIMG height=72 alt=20-50元夏裝搶瘋 src=" " width=96美女小凡最新夏裝/AA class=pl href=" " target=_blankIMG height=72 alt=韓國人氣小耳環(huán) src=" " width=96韓國人氣小耳環(huán)/AA class=pl href=" " target=_blankIMG height=72 alt=3萬6超值裝修88平 src=" " width=963萬6超值裝修88平/AA class=pl href=" " target=_blankIMG height=72 alt=牛干巴敲開財富門 src=" " width=96牛干巴敲開財富門/AA class=pl href=" " target=_blankIMG height=72 alt=4K至7K高性能本本 src=" " width=964K至7K高性能本本/AA class=pl href=" " target=_blankIMG height=72 alt=7萬裝修102平婚房 src=" " width=967萬裝修102平婚房/AA class=pl href=" " target=_blankIMG height=72 alt=最新小車節(jié)油為主 src=" " width=96最新小車節(jié)油為主/AA class=pl href=" " target=_blankIMG height=72 alt="熱門項目 BT烤翅" src=" " width=96熱門項目 BT烤翅/AA class=pl href=" " target=_blankIMG height=72 alt=流行T恤+褲裝 src=" " width=96要顯瘦就這么穿!/A !-- piclist end --/DIV DIV id=List2_1/DIV/DIV/DIVA onmouseup=ISL_StopDown_1() class=RightBotton onmousedown=ISL_GoDown_1() onmouseout=ISL_StopDown_1() href="javascript:void(0);" target=_self/A/DIV SCRIPT type=text/javascript !-- picrun_ini() //-- /SCRIPT !-- picrotate_left end -- /body /html
JavaScript 左移位溢出問題:255
JS 左移結(jié)果是一個有符號的32位整數(shù),255本身占了8位,左移24位就溢出了
可以參考這個:
javascript如何實現(xiàn)字符串循環(huán)移位
function?f(str,?n)
{
n?=?n?%?str.length;
return?str.replace(new?RegExp("^(.{"+n+"})(.*)$"),?"$2$1");
}
f("abcedfg",?3);
javascript運算符問題
javascript具有下列種類的運算符:算術(shù)運算符;等同運算符與全同運算符;比較運算符; 2、目的分類:字符串運算符;邏輯運算符;逐位運
1、javascript具有下列種類的運算符:算術(shù)運算符;等同運算符與全同運算符;比較運算符;2、目的分類:字符串運算符;邏輯運算符;逐位運算符;賦值運算符;3、特殊運算符:條件運算符;typeof運算符;創(chuàng)建對象運算符new;delete運算符;void運算符號;逗號運算符;算術(shù)運算符:+ 、 - 、* 、 / 、 % 、 -(一元取反) 、 ++ 、等同運算符與全同運算符:== 、 ===、 !== 、 !===比較運算符: 、 、 = 、 =字符串運算符:: 、 、 = 、 = 、 = 、 +邏輯運算符: 、 、 !、賦值運算符:=、 +=、 *=、 -=、 /=規(guī)則:一、一定要注意傳遞給運算符的數(shù)據(jù)類型和返回的數(shù)據(jù)類型!不同的運算符都期望它的運算數(shù)表達式計算出的結(jié)果符合某種數(shù)據(jù)類型。例如:對字符串是不能進行乘法運算的,"a" * "b" 是不合法的,但是,在可能的情況下,javascript會把表達式轉(zhuǎn)換成正確的類型,因此,表達式 "3" * "5" 是合法的,javascript將字符串轉(zhuǎn)換成數(shù)字執(zhí)行運算,結(jié)果返回的是數(shù)字15,而不是字符串"15"。二、+ 根據(jù)運算數(shù)的不同,具有不同的表現(xiàn):字符串 + 字符串 = 字符串(被連接);"a" + "b" = "ab" "5" + "6" = "11"字符串 + 數(shù)字 = (字符串轉(zhuǎn)換成數(shù)字)字符串(被連接);"a" + 5 = "a5" 5被轉(zhuǎn)換成字符串 "1" + 0 = "10"數(shù)字 + 數(shù)字 = 數(shù)字(相加)5 + 5 = 10。三、注意運算符的結(jié)合性,有些運算符從左到右的結(jié)合性;有些從右到左結(jié)合性。例如:w = a + b + c 等同于 w = (a + b) + c;w = -b 等同于 w = - ( - ( -b ) ); w = a = b = c 等同于 w= ( a = ( b = c ))一元運算符、賦值運算符、三元運算符的結(jié)合性是從右到左的;四、算術(shù)運算符規(guī)則:“+”:可以進行“加法”與“連接”運算;如果2個運算符中的一個是字符串,javascript就將另一個轉(zhuǎn)換成字符串,然后將2個運算數(shù)連接起來。“+”:如果一個運算數(shù)是對象,javascript就會將對象轉(zhuǎn)換成數(shù)字做加法運算或者字符串做連接運算;“-”“*”“/” 如果2個運算數(shù)中的一個是是非數(shù)字,則將它轉(zhuǎn)化成數(shù)字執(zhí)行數(shù)學運算?!?” 在javascript中,由于所有的數(shù)都是浮點數(shù),除法的結(jié)果都是浮點數(shù),5 / 2 = 2.5 ;除數(shù)為0的結(jié)果為正負無窮;0/0為NaN;“%”模運算符:計算第一個運算數(shù)對第二個運算數(shù)的模,就是第一個運算數(shù)被第二個運算數(shù)除時,返回余數(shù)。如果運算數(shù)是非數(shù)字的,則轉(zhuǎn)換成數(shù)字?!?”一元取反:將運算數(shù)取反,如果運算數(shù)不是數(shù)字,則轉(zhuǎn)化成數(shù)字?!?+”“”增量運算符/減量運算符號:運算數(shù)必須是一個變量、樹組的一個元素或?qū)ο蟮囊粋€屬性。如果運算數(shù)不是數(shù)字,則轉(zhuǎn)換成數(shù)字。注意:如果“++”位于運算數(shù)之前,先對運算數(shù)進行增量,然后計算運算數(shù)增長后的值。如果“”位于運算數(shù)之后,先計算運算數(shù)未增長之前的值,然后對運算數(shù)增量。例如:i = 1; //賦值給i值1j = ++i; //先將i增量為2,然后將2賦值給j,i的值是2,j的值也是2。i = 1; //賦值給i值1j = i++; //先將i賦值給j,然后對將i值增量到2,i的值是2,j的值是1。減量運算符“”與“++”相同。五、等同運算符與全同運算符:(一)“==”“!==”等同運算符與非等同運算符:比較2個運算數(shù),返回一個不布爾值。比較數(shù)值、字符串、布爾值使用的都是量值。當且僅當兩個變量存放的值相等的時候,他們才相等。比較對象、數(shù)組、函數(shù)的時候,使用的是引用,只有2個變量引用的是同一個對象時,他們才是相等的。兩個不同的數(shù)組是完全不同的,即使他們具有完全相同的元素。對于存放對象、數(shù)組、函數(shù)的引用的變量來說,只有當他們引用的是同一個對象、數(shù)組、函數(shù)的時候,他們才相等。
注意!應(yīng)遵循的原則:當兩個運算數(shù)的類型不同時:將他們轉(zhuǎn)換成相同的類型,1)一個數(shù)字與一個字符串,字符串轉(zhuǎn)換成數(shù)字之后,進行比較。2)true轉(zhuǎn)換為1、false轉(zhuǎn)換為0,進行比較。3)一個對象、數(shù)組、函數(shù) 與 一個數(shù)字或字符串,對象、數(shù)組、函數(shù)轉(zhuǎn)換為原始類型的值,然后進行比較。(先使用valueOf,如果不行就使用toString)4)其他類型的組合不星等。想兩個運算數(shù)類型相同,或轉(zhuǎn)換成相同類型后:1)2個字符串:同一位置上的字符相等,2個字符串就相同。2)2個數(shù)字:2個數(shù)字相同,就相同。如果一個是NaN,或兩個都是NaN,則不相同。3)2個都是true,或者2個都是false,則想同。4)2個引用的是同一個對象、函數(shù)、數(shù)組,則他們相等,如果引用的不是同一個對象、函數(shù)、數(shù)組,則不相同,即使這2個對象、函數(shù)、數(shù)組可以轉(zhuǎn)換成完全相等的原始值。5)2個null,或者2個都是未定義的,那么他們相等?!?=”非等同運算符:與等同運算符檢測的結(jié)果相反。(二)“===”“!===”全同運算符與非全同運算符號:全同運算符遵循等同運算符的比較規(guī)則,但是它不對運算數(shù)進行類型轉(zhuǎn)換,當兩個運算數(shù)的類型不同時,返回false;只有當兩個運算數(shù)的類型相同的時候,才遵循等同運算符的比較規(guī)則進行比較。“!==”非全同運算符與全同運算符比較的結(jié)果相反。如果兩個運算數(shù)的類型或者值不同的時候,返回true。六、比較運算符:這些比較運算符用于比較不同類型的值,結(jié)果返回一個布爾值?!啊薄啊薄?”“=”注意規(guī)則:比較的運算數(shù)可以是任意類型的,但是只能在數(shù)字和運算數(shù)上執(zhí)行。不是數(shù)字和字符串的運算數(shù)將被轉(zhuǎn)換成數(shù)字或字符串。1)如果兩個運算數(shù)都是數(shù)字,或者都可以轉(zhuǎn)換成數(shù)字,則按照數(shù)字的大小進行比較;2)如果兩個運算數(shù)都是字符串,或者都可以轉(zhuǎn)換成字符串,則將按照字母順序進行比較;3)如果字符串遇到數(shù)字,則將字符串轉(zhuǎn)換成數(shù)字進行比較。4)如果運算數(shù)既不能轉(zhuǎn)換成數(shù)字,也不能轉(zhuǎn)換成字符串,則返回結(jié)果false。七、字符串運算符:并沒有專用的字符串運算符,只是有些運算符在遇到字符串運算數(shù)的時候,表現(xiàn)不同。(一)“+”連接2個字符串;1)當2個運算數(shù)都是字符串的時候,連接起來;2)當其中有一個是數(shù)字的時候,將數(shù)字轉(zhuǎn)換成字符串,連接起來;(二)“”這樣的比較運算符通過比較確認兩個字符串的順序,比較采用字符的順序,較小的位于教大的前面,大寫字母位于小寫字母之前。(三)“+”的作用方法取決于計算順序,如:s = 1 + 2 +"var" 則:返回結(jié)果3var; 因為先計算1+2,然后將結(jié)果3轉(zhuǎn)換成字符串與"var"連接;如:s = "var" + 1 + 2 則:返回結(jié)果var12; 因為先計算var與1的連接,在將結(jié)果var1與轉(zhuǎn)換成字符串的2連接起來。八、邏輯運算符:用于執(zhí)行布爾運算,常常和比較運算符一起使用,來表示復(fù)雜的比較運算?!啊?邏輯與運算、“”邏輯或運算符、“!”邏輯非運算符(一)“”當兩個運算數(shù)都是布爾值的時候,邏輯與對他們進行and操作,即:當且僅當兩個布爾值都是true的時候,返回結(jié)果true,否則返回false。注意:實際表現(xiàn)“”將檢測第一個表達式運算數(shù)布爾值,如果第一個運算數(shù)表達式返回false,則返回左邊第一個運算數(shù)表達式的值:false;否則將繼續(xù)檢測第二個即右邊的運算數(shù)表達式,然后返回第二個運算數(shù)表達式的值;例如:if (a = b) stop(); 與 (a = b) stop(); 等價不贊成使用這個方法,因為運算符右邊的代碼不能保證會被執(zhí)行,例如:if ((a b) (b++ 10) ) stop();如果運算符右邊的增量必須的話,卻有可能由于前面的返回值而不被執(zhí)行,一般反對在的右邊使用具有其他作用的表達式(賦值、函數(shù)調(diào)用、增減量);將“”看作是一個布爾代數(shù)的運算符,會更簡單與安全。(二)“”當兩個運算數(shù)都是布爾值的時候,邏輯或?qū)λ麄冞M行or操作,即:當兩個布爾值有一個是true的時候,返回結(jié)果true,否則返回false。注意:實際表現(xiàn)“”將檢測第一個表達式運算數(shù)布爾值,如果第一個運算數(shù)表達式返回true,則返回左邊第一個運算數(shù)表達式的值:true;否則將繼續(xù)檢測第二個即右邊的運算數(shù)表達式,然后返回第二個運算數(shù)表達式的值;同樣不贊成使用這個方法,因為運算符右邊的代碼不能保證會被執(zhí)行,一般反對在的右邊使用具有其他作用的表達式(賦值、函數(shù)調(diào)用、增減量);將“”看作是一個布爾代數(shù)的運算符,會更簡單與安全。(三)“!”邏輯非是一個一元運算符,放在運算數(shù)之前,它的目的是對運算數(shù)取反。九、賦值運算符:(一)“=”是賦值運算符;他總是期望左邊的運算數(shù)是一個變量、數(shù)組的一個元素或?qū)ο蟮囊粋€屬性;期望右邊是一個任意類型的任意的值;從右到左的結(jié)合性,如果一個表達式中有多個賦值運算符,則從最右邊開始計算。注意:每一個賦值表達式都有一個值,就是運算符右邊的值;(二)可以使用帶操作的賦值運算“+=” 左邊的值加上右邊的值后,賦值于左邊的值?!?=”“/=”“*=”方法一樣;十、其他運算符:“?:”條件運算符是唯一的一個三元運算符;一個表達式的布爾結(jié)果?表達式1(任意類型的任意值):表達式2(任意類型的任意值);根據(jù)第一個運算數(shù)的布爾值結(jié)果,如果為true,則執(zhí)行第二個運算數(shù)表達式,返回第二個運算數(shù)表達式的值;如果第一個運算數(shù)的布爾值結(jié)果是false,則執(zhí)行第三個運算數(shù)表達式,返回第三個運算數(shù)表達式的值。
移位運算符面向的運算對象也是二進制的“位”??蓡为氂盟鼈兲幚碚麛?shù)類型(主類型的一種)。左移位運算符()能將運算符左邊的運算對象向左移動運算符右側(cè)指定的位數(shù)(在低位補0)?!坝蟹枴庇乙莆贿\算符()則將運算符左邊的運算對象向右移動運算符右側(cè)指定的位數(shù)?!坝蟹枴庇乙莆贿\算符使用了“符號擴展”:若值為正,則在高位插入0;若值為負,則在高位插入1。Java也添加了一種“無符號”右移位運算符(),它使用了“零擴展”:無論正負,都在高位插入0。這一運算符是C或C++沒有的。
若對char,byte或者short進行移位處理,那么在移位進行之前,它們會自動轉(zhuǎn)換成一個int。只有右側(cè)的5個低位才會用到。這樣可防止我們在一個int數(shù)里移動不切實際的位數(shù)。若對一個long值進行處理,最后得到的結(jié)果也是long。此時只會用到右側(cè)的6個低位,防止移動超過long值里現(xiàn)成的位數(shù)。但在進行“無符號”右移位時,也可能遇到一個問題。若對byte或short值進行右移位運算,得到的可能不是正確的結(jié)果(Java 1.0和Java 1.1特別突出)。它們會自動轉(zhuǎn)換成int類型,并進行右移位。但“零擴展”不會發(fā)生,所以在那些情況下會得到-1的結(jié)果。可用下面這個例子檢測自己的實現(xiàn)方案:
//: URShift.java
// Test of unsigned right shift
public class URShift {
public static void main(String[] args) {
int i = -1;
i = 10;
System.out.println(i);
long l = -1;
l = 10;
System.out.println(l);
short s = -1;
s = 10;
System.out.println(s);
byte b = -1;
b = 10;
System.out.println(b);
}
} ///:~
移位可與等號(=或=或=)組合使用。此時,運算符左邊的值會移動由右邊的值指定的位數(shù),再將得到的結(jié)果賦回左邊的值。
下面這個例子向大家闡示了如何應(yīng)用涉及“按位”操作的所有運算符,以及它們的效果:
//: BitManipulation.java
// Using the bitwise operators
import java.util.*;
public class BitManipulation {
public static void main(String[] args) {
Random rand = new Random();
int i = rand.nextInt();
int j = rand.nextInt();
pBinInt("-1", -1);
pBinInt("+1", +1);
int maxpos = 2147483647;
pBinInt("maxpos", maxpos);
int maxneg = -2147483648;
pBinInt("maxneg", maxneg);
pBinInt("i", i);
pBinInt("~i", ~i);
pBinInt("-i", -i);
pBinInt("j", j);
pBinInt("i j", i j);
pBinInt("i | j", i | j);
pBinInt("i ^ j", i ^ j);
pBinInt("i 5", i 5);
pBinInt("i 5", i 5);
pBinInt("(~i) 5", (~i) 5);
pBinInt("i 5", i 5);
pBinInt("(~i) 5", (~i) 5);
long l = rand.nextLong();
long m = rand.nextLong();
pBinLong("-1L", -1L);
pBinLong("+1L", +1L);
long ll = 9223372036854775807L;
pBinLong("maxpos", ll);
long lln = -9223372036854775808L;
pBinLong("maxneg", lln);
pBinLong("l", l);
pBinLong("~l", ~l);
pBinLong("-l", -l);
pBinLong("m", m);
pBinLong("l m", l m);
pBinLong("l | m", l | m);
pBinLong("l ^ m", l ^ m);
pBinLong("l 5", l 5);
pBinLong("l 5", l 5);
pBinLong("(~l) 5", (~l) 5);
pBinLong("l 5", l 5);
pBinLong("(~l) 5", (~l) 5);
}
static void pBinInt(String s, int i) {
System.out.println(
s + ", int: " + i + ", binary: ");
System.out.print(" ");
for(int j = 31; j =0; j--)
if(((1 j) i) != 0)
System.out.print("1");
else
System.out.print("0");
System.out.println();
}
static void pBinLong(String s, long l) {
System.out.println(
s + ", long: " + l + ", binary: ");
System.out.print(" ");
for(int i = 63; i =0; i--)
if(((1L i) l) != 0)
System.out.print("1");
else
System.out.print("0");
System.out.println();
}
} ///:~
程序末尾調(diào)用了兩個方法:pBinInt()和pBinLong()。它們分別操作一個int和long值,并用一種二進制格式輸出,同時附有簡要的說明文字。目前,可暫時忽略它們具體的實現(xiàn)方案。
大家要注意的是System.out.print()的使用,而不是System.out.println()。print()方法不會產(chǎn)生一個新行,以便在同一行里羅列多種信息。
除展示所有按位運算符針對int和long的效果之外,本例也展示了int和long的最小值、最大值、+1和-1值,使大家能體會它們的情況。注意高位代表正負號:0為正,1為負。下面列出int部分的輸出:
-1, int: -1, binary:
11111111111111111111111111111111
+1, int: 1, binary:
00000000000000000000000000000001
maxpos, int: 2147483647, binary:
01111111111111111111111111111111
maxneg, int: -2147483648, binary:
10000000000000000000000000000000
i, int: 59081716, binary:
00000011100001011000001111110100
~i, int: -59081717, binary:
11111100011110100111110000001011
-i, int: -59081716, binary:
11111100011110100111110000001100
j, int: 198850956, binary:
00001011110110100011100110001100
i j, int: 58720644, binary:
00000011100000000000000110000100
i | j, int: 199212028, binary:
00001011110111111011101111111100
i ^ j, int: 140491384, binary:
00001000010111111011101001111000
i 5, int: 1890614912, binary:
01110000101100000111111010000000
i 5, int: 1846303, binary:
00000000000111000010110000011111
(~i) 5, int: -1846304, binary:
11111111111000111101001111100000
i 5, int: 1846303, binary:
00000000000111000010110000011111
(~i) 5, int: 132371424, binary:
00000111111000111101001111100000
數(shù)字的二進制形式表現(xiàn)為“有符號2的補值”。
網(wǎng)頁題目:javascript移位,js transform位移
URL分享:http://www.dlmjj.cn/article/dsijspi.html