第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

immutablejs源碼中這個計算數(shù)字哈希的函數(shù)的怎么理解?

immutablejs源碼中這個計算數(shù)字哈希的函數(shù)的怎么理解?

德瑪西亞99 2018-11-14 14:14:38
immutablejs源碼中這個計算數(shù)字哈希的函數(shù)的怎么理解?function hashNum(o) {var type = typeof o;  if (type === 'number') {    if (o !== o || o === Infinity) {      return 0;    }    var h = o | 0;    if (h !== o) {      h ^= o * 0xFFFFFFFF;    }    while (o > 0xFFFFFFFF) {      o /= 0xFFFFFFFF;      h ^= o;    }    return smi(h);  }}// v8 has an optimization(優(yōu)化組合) for storing 31-bit signed numbers(有正負符號數(shù)).// Values which have either 00 or 11 as the high order bits(高字節(jié)位) qualify(限定).// This function drops the highest order bit in a signed number(有正負符號數(shù)), maintaining(堅持,保衛(wèi))// the sign bit(符號位).function smi(i32) {  return ((i32 >>> 1) & 0x40000000) | (i32 & 0xBFFFFFFF);}
查看完整描述

1 回答

?
慕姐8265434

TA貢獻1813條經(jīng)驗 獲得超2個贊

首先明確 hashNum 函數(shù)的使用場景。

JS 默認采用了 IEEE-754 的 64 位雙精度浮點數(shù)來存儲數(shù)字,這使得數(shù)字的實際值域很大。hashNum 函數(shù)利用了
Chrome 對整數(shù)類型的優(yōu)化,將 number 類型的浮點數(shù)映射為一個 32 位整數(shù),從而加快比較速度。

因此,這個函數(shù)實際上是通過位運算的方式將浮點數(shù)轉(zhuǎn)為了一個整數(shù)。在輸入數(shù)字是一個不大的整數(shù)的條件下,函數(shù)返回的是整數(shù)本身。對于數(shù)字非常大和數(shù)字為浮點數(shù)的情形下,會返回一個 i32 格式的整數(shù)作為哈希結(jié)果。


查看完整回答
反對 回復 2018-12-15
  • 1 回答
  • 0 關(guān)注
  • 464 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號