重温js——位运算

位运算是在数字底层(即表示数字的 32 个数位)进行运算的。由于位运算是低级的运算操作,所以速度往往也是最快的(相对其它运算如加减乘除来说),并且借助位运算有时我们还能实现更简单的程序逻辑,缺点是很不直观,许多场合不能够使用。

计算的过程如下:首先会把a 和 b 的值都转成二进制的数据(这里转换的数据是 32 的二进制哦),然后进行运算

计算过程如下:

运算过程如下:

我们知道,js中的数字默认是有符号的。有符号的32位二进制的最高位也就是第一位数字代表着正负,1代表负数,0代表整数。那到底11111111111111111111111111111110等于多少呢?最高位为1代表负数,负数的二进制转化为十进制:符号位不变,其他位取反加1。取反之后为10000000000000000000000000000001,加1之后为10000000000000000000000000000010,十进制为-2。

这里还有一个计算非运算的技巧:
取非运算的时候,先把数据前面加一个 负号 , 然后在 减1

公式:
数字1 2 ^ 数字2

公式:
取整(数字1 / 2 ^ 数字2)

// 运用场景,想要实现一个权限控制



  • js涓浣嶈繍绠2<lt;32缁撴灉涓嶆纭庝箞瑙e喅
    绛旓細js涓浣嶈繍绠2<lt;32缁撴灉涓嶆纭В鍐筹細---瑙e喅鏂规--- javascript浣嶆搷浣绗︿細鎶婃暟鍊艰浆鎹㈡垚32浣嶇殑鏁存暟鍐嶆墽琛屾搷浣滐紝鏈鍚庡啀鎶婄粨鏋滆浆鍥64浣嶃傛墍浠ョ粨鏋滃彧鑳芥槸32浣嶆暣鏁拌兘琛ㄧず鐨勮寖鍥翠簡銆---瑙e喅鏂规--- 鑲畾婧㈠嚭浜嗭紝濡傛灉鐪熸兂寰楀埌鏁版嵁锛岄偅灏辫鎯冲叾浠栫殑鍔炴硶浜嗭紝姣斿璇村彲浠ユ妸瀹冨垎瑙f垚涓や釜灏忎竴鐐圭殑鏁帮紝鎶婅繖涓や釜...
  • JS鍩虹鍥為【-鏁板-IEEE754
    绛旓細鏁扮粍鐨勭储寮曟寜鐓32浣嶄笖鏃犵鍙峰畾鐐规暣鏁板瓨鍌紝涔熷氨鏄鏁扮粍绱㈠紩鏈澶у间负 2 32 锛岃屾暟缁勪互0寮濮嬶紝鎵浠ュ疄闄呮渶澶у间负2 32 - 1 瀵逛簬 & | ^ ~ 浠ュ悗鍗曠嫭鍐嶈,涓昏璇存槑 <<, >>, >>> ECMA鐩稿叧浣嶈繍绠璇存槑 瀹屾暣鐨勪綅杩愮畻姝ラ js鑳界簿纭绠楋紙杩愮畻缁撴灉锛夌殑鏁板艰寖鍥存槸 [-2 53 , +2 53 ]...
  • JS涓殑鈥&&鈥濅笌鈥&鈥濆拰鈥渱|鈥濃渱鈥濇湁浠涔堝尯鍒?
    绛旓細鍦↗avaScript涓&&鈥濆拰鈥渱|鈥濇槸閫昏緫杩愮畻绗︼紱鈥&鈥濆拰鈥渱鈥濇槸浣嶈繍绠绗︺傚洓涓繍绠楃涓昏鍖哄埆鏄繍绠楁柟娉曚笉涓鏍枫
  • js涓瓇鎸変綅鍙栧弽鐨杩愮畻缁撴灉鏄粈涔?
    绛旓細浣跨敤~鎸変綅鍙栧弽杩愮畻鐨勬椂鍊欙紝璁$畻鏈轰細灏嗘搷浣滄暟鎵瀵瑰簲鐨勪簩杩涘埗琛ㄨ揪寮忕殑姣忎竴涓綅杩涜鍙栧弽璁$畻锛屽彇鍙嶅悗鎵寰楀埌鐨勫煎氨鏄瘇鎸変綅鍙栧弽鐨勮繍绠楃粨鏋溿備緥濡傦紝鍋囧璁$畻鏈烘槸32浣嶇殑锛屾帴涓嬫潵瑕佽绠梸5鐨勫硷紝璁$畻杩囩▼濡備笅锛5 鐨勪簩杩涘埗琛ㄨ揪寮忎负锛0000 0000 0000 0000 0000 0000 0000 0101 鎵ц~杩愮畻锛屽嵆~5鍚: 1111 ...
  • JS &鐨勪綔鐢?
    绛旓細JS &鐨勪綔鐢細&琛ㄧず浣嶇殑涓杩愮畻銆備袱涓暟鍊肩殑鍚勪釜浣嶅垎鍒浉涓庯紝鍚屾椂涓1鎵嶅緱1銆傚彧瑕佷竴涓负0灏卞緱0銆85绛変簬浜岃繘鍒1010101锛屽鏋渃urrentState & 85 缁撴灉杩樻槸绛変簬85锛屽氨琛ㄧずcurrentState鐨1銆3銆5銆7浣嶉兘涓1銆備綔鈥滀笌鈥濊繍绠楋紝鏈绠鍗曠殑鐞嗚В鏄紝鍙互鎶婁袱涓暟鍖栦负浜岃繘鍒舵潵鐪嬬湅锛屾瘮濡傦細10鐨勪簩杩涘埗101012鐨勪簩...
  • js涓&鍜&鏈変粈涔堝尯鍒?
    绛旓細鐩存帴杩斿洖false锛涘鏋渱|鐨勭涓涓繍绠楁暟鏄痶rue锛屼篃涓嶅啀鑰冭檻绗簩涓繍绠楁暟锛岀洿鎺ヨ繑鍥瀟rue銆傝&鍜寍杩愮畻绗﹀嵈涓嶆槸杩欐牱鐨勶紝瀹冧滑鎬绘槸瑕佹瘮杈冧袱涓繍绠楁暟鎵嶅緱鍑虹粨鏋滐紝鍥犺屾ц兘涓&&鍜寍|浼氭瘮&鍜寍濂姐傚姛鑳界敤娉 &&鍜寍|鍙兘杩涜閫昏緫杩愮畻锛岃&鍜寍闄や簡鍙互杩涜"閫昏緫杩愮畻"澶栵紝杩樺彲浠ヨ繘琛浣嶈繍绠 ...
  • js涓繖浜涚鍙锋槸浠涔堟剰鎬:&,||,===,!,++
    绛旓細&锛氶昏緫涓庯紝&&鍚屾牱鍙互琛ㄧず閫昏緫涓庯紱||锛氶昏緫鎴栵紝|涔熷彲浠ヨ〃绀洪昏緫鎴栵紱锛濓紳锛濓細鍏堝垽鏂乏鍙充袱杈圭殑鏁版嵁绫诲瀷锛屽鏋滄暟鎹被鍨嬩笉涓鑷达紝鐩存帴杩斿洖false锛涳紒锛氶昏緫闈烇紱锛嬶紜锛氳嚜鍔犵鍙凤紝鍦ㄥ師鏈夌殑鍩虹涓婂姞涓1锛js杩愮畻绗﹀弻绔栨潬鈥渱|鈥濈殑鐢ㄦ硶 1銆JS鍙岀珫绾胯繍绠楃锛氭槸鎴栨瘮杈冦傚null||鈥1鈥欙紝杩斿洖鈥1鈥;鈥2鈥檤...
  • js鐨杩愮畻绗︿笌java鐨勪竴鏍峰悧?
    绛旓細鏈変竴澶ч儴鍒嗛兘鏄竴鏍风殑锛屾湁鏋佸皯閮ㄥ垎涓嶅お涓鏍枫傚浠ヨ嚧鐢紝娲诲娲荤敤 鍩烘湰閮界浉閫氱殑銆傚缁冧範缁冧範灏卞ソ浜嗐
  • 涓涓&鍦js涓唬琛ㄤ粈涔堟剰鎬
    绛旓細鍦js閲岋紝涓涓&琛ㄧず杩愮畻绗︽寜浣嶄笌锛屽氨鏄妸涓や釜浜岃繘鍒舵暟鎸夋瘡涓浣嶆瘮杈冿紝涓や釜閮戒负1鍒欎负1锛屽惁鍒欎负0锛堜篃绫讳技涓庝笖锛岄兘鐪熸墠涓虹湡锛夋瘮濡 1111&0110 = 0110銆傚鏋滀笉鏄簩杩涘埗鏁版瘮杈冿紝闇瑕佸厛鎶婅繖涓や釜鏁拌浆鎹负浜岃繘鍒讹紝姣斿 15&6 = 1111&0110 = 0110 = 6锛...
  • js 涓=== !== || !! 鏄粈涔堟剰鎬?
    绛旓細"0x" 鎸囨槑鏄崄鍏繘鍒("hex") 锛宆 鏄寜浣嶅紓鎴栵紝& 鏄寜浣嶄笌锛 | 鏄寜浣嶆垨锛岃繖浜涢兘鏄浣嶈繍绠绗︼紝鍙互浣跨敤windows涓殑璁$畻鍣ㄦ潵璁$畻锛屾妸璁$畻鍣ㄨ缃垚鈥滅瀛﹀瀷鈥濓紝浣跨敤鈥滃崄鍏繘鍒垛濊緭鍏ffffff锛屸淴or鈥濇槸^锛屸淎nd鈥濇槸&锛屸淥r鈥濇槸|锛岀粨鏋滄槸103锛屼篃鍙互鍐欐垚涓涓猦tm鏂囦欢鐢↖E鐪嬩竴涓嬬粨鏋 onmouseover ...
  • 扩展阅读:js标准公差对照表 ... 电路中j和∠的转换 ... js事件捕获和事件冒泡 ... 电机温升对照表 ... js位运算 ... 温升对照表 ... 45ntsc色域和100rgb ... js事件循环 ... 45ntsc色域相当于srgb多少 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网