国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

js中位運(yùn)算的運(yùn)用實(shí)例分析

2024-05-06 15:27:19
字體:
供稿:網(wǎng)友

我們可能很少在編程中用位運(yùn)算,如果沒深入學(xué)習(xí),可能也很難理解。平時(shí)的數(shù)值運(yùn)算,其實(shí)是要先轉(zhuǎn)換成二進(jìn)制再進(jìn)行運(yùn)算的,而位運(yùn)算就是直接進(jìn)行二進(jìn)制運(yùn)算,所以位運(yùn)算的執(zhí)行效率肯定是更高的。下面通過一些實(shí)例來加深對(duì)位運(yùn)算的理解。

按位與(&)

&&運(yùn)算符我們都知道,只有兩個(gè)都為真,結(jié)果才為真。&道理是一樣的,只有兩個(gè)數(shù)的值為1時(shí),才返回1。例如1和3的按位與操作:

    0001
&  0011
  ---------
    0001

只有對(duì)應(yīng)的數(shù)為1時(shí),結(jié)果才為1,其他都為0。
判斷一個(gè)數(shù)是奇數(shù)還是偶數(shù),我們會(huì)用求余數(shù)來判斷:

function assert(n) {  if (n % 2 === 1) { console.log("n是奇數(shù)"); } else { console.log("n是偶數(shù)"); }}assert(3); // "n是奇數(shù)"

我們也可以用一個(gè)數(shù)和1進(jìn)行按位&操作來判斷,而且速度更快:

function assert(n) {if (n & 1) { console.log("n是奇數(shù)");} else { console.log("n是偶數(shù)");}}assert(3); // "n是奇數(shù)"

下面是位運(yùn)算過程:

1 = 0001
3 = 0011
--------
   & = 0001

奇數(shù)的二進(jìn)制碼的最后一位數(shù)肯定是1,而1只有最后一位為1,按位&操作之后,結(jié)果肯定只有最后一位數(shù)為1。而偶數(shù)的二進(jìn)制表示的最后一位數(shù)是0,和1進(jìn)行按位&操作,結(jié)果所有位數(shù)都為0。

按位或(|)

|與||操作符的道理也是一樣的,只要兩個(gè)數(shù)中有一個(gè)數(shù)為1,結(jié)果就為1,其他則為0。

  0001
| 0011
 ---------
  0011

對(duì)浮點(diǎn)數(shù)向下求整,我們會(huì)用下面的方法:

var num = Math.floor(1.1); // 1

我們也可以用位運(yùn)算來求整:

var num = 1.1 | 0; // 1

其實(shí)浮點(diǎn)數(shù)是不支持位運(yùn)算的,所以會(huì)先把1.1轉(zhuǎn)成整數(shù)1再進(jìn)行位運(yùn)算,就好像是對(duì)浮點(diǎn)數(shù)向下求整。所以1|0的結(jié)果就是1。

按位非(~)

按位非就是求二進(jìn)制的反碼:

var num = 1; // 二進(jìn)制 00000000000000000000000000000001
var num1 = ~num; // 二進(jìn)制 11111111111111111111111111111110

我們知道,js中的數(shù)字默認(rèn)是有符號(hào)的。有符號(hào)的32位二進(jìn)制的最高位也就是第一位數(shù)字代表著正負(fù),1代表負(fù)數(shù),0代表整數(shù)。那到底11111111111111111111111111111110等于多少呢?最高位為1代表負(fù)數(shù),負(fù)數(shù)的二進(jìn)制轉(zhuǎn)化為十進(jìn)制:符號(hào)位不變,其他位取反加1。取反之后為10000000000000000000000000000001,加1之后為10000000000000000000000000000010,十進(jìn)制為-2。

按位異或(^)

按位異或是兩個(gè)數(shù)中只有一個(gè)1時(shí)返回1,其他情況返回0。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 闽清县| 新野县| 曲沃县| 五莲县| 荔浦县| 苍溪县| 西青区| 昌黎县| 贵溪市| 望江县| 丰城市| 府谷县| 阳山县| 托克托县| 通河县| 会理县| 镇原县| 广丰县| 张家界市| 太谷县| 尼木县| 漠河县| 灵武市| 远安县| 兴城市| 绍兴市| 北安市| 安化县| 赤城县| 新邵县| 财经| 宁海县| 渝中区| 陕西省| 阿拉善左旗| 临潭县| 齐河县| 渝北区| 鹿泉市| 荥经县| 连州市|