<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          理解 DAX 位運算

          共 1406字,需瀏覽 3分鐘

           ·

          2021-10-18 09:12

          PowerBI 十月更新已到,其中最重要的莫過于,再次增強(qiáng)了 DAX 的能力,為 DAX 帶來了位移運算。

          理解什么是位

          數(shù)字在計算機(jī)中的存儲是放在內(nèi)存小格子中的,如下:

          而且只有兩種可能,要么是 0 ,要么是 1。

          對于一個一般的數(shù)字,則是這樣的,例如:數(shù)字 7 的表示如下:

          從右向左,依次表示:1 + 2^1^ + 2^2^ = 7 ,這就是 7 這個數(shù)字在計算機(jī)內(nèi)存的小格子中的真實表示。

          DAX 現(xiàn)在通過位運算函數(shù)可以對格子中的內(nèi)容進(jìn)行調(diào)整,就是位運算

          向左移動

          對于數(shù)字 7,如下:

          向右移動 1 位,則有:

          表示:

          0 + 2^1^ + 2^2^ + 2^3^ = 14

          用 DAX 函數(shù)驗證如下:

          BIT.LeftShift = BITLSHIFT( 7 , 1 )

          結(jié)果如下:

          向右移動

          對于數(shù)字 7,如下:

          向右移動 1 位,則有:

          表示:

          1 + 2^1^ = 3

          用 DAX 函數(shù)驗證如下:

          BIT.RightShift = BITRSHIFT( 7 , 1 )

          結(jié)果如下:

          注意,由于向右移動時,最右端的 1 已經(jīng)不在當(dāng)前存放區(qū)域,因此,會忽略它的計算。

          按位與運算

          按位與運算表示在對應(yīng)的位上,如果都是 1 則返回 1,否則返回 0,例如:

          數(shù)字 3 和 數(shù)字 7 的按位與運算的結(jié)果是 3。

          用 DAX 函數(shù)驗證如下:

          BIT.AND = BITAND( 7 , 3 )

          結(jié)果如下:

          按位或運算

          按位與運算表示在對應(yīng)的位上,只要有 1 則返回 1,全部為 0 才返回 0,例如:

          數(shù)字 3 和 數(shù)字 7 的按位或運算的結(jié)果是 7。

          用 DAX 函數(shù)驗證如下:

          BIT.OR = BITOR( 7 , 3 )

          結(jié)果如下:

          按位異或運算

          如果兩個值不相同,則異或結(jié)果為 1。如果 a、b 兩個值相同,異或結(jié)果為 0。例如:

          數(shù)字 3 和 數(shù)字 7 的按位異或運算的結(jié)果是 4。

          用 DAX 函數(shù)驗證如下:

          BIT.XOR = BITXOR( 7 , 3 )

          結(jié)果如下:

          DAX 整數(shù)的極限

          通過以上內(nèi)容,來探查一下 DAX 整數(shù)范圍的極限,如下:

          這很容易理解,再來看:

          說明還是沒有到極限,再來看:

          說明還是沒有到極限,再來看:

          奇怪的現(xiàn)象來了,怎么會出現(xiàn)負(fù)數(shù)呢?

          繼續(xù)看看:

          似乎回到了原點了。

          如果仔細(xì)思考,就可以得到這樣的結(jié)論:

          • DAX 的整數(shù)使用 64 位(bit)內(nèi)存小格子來裝載;

          • 可表示的范圍是 - 2^64^ 到 2^63^ 大小,這與 DAX 官方文檔給出的標(biāo)準(zhǔn)一致;

          • 最左端的位,同時表示符號位,因此當(dāng)移動到該位時,數(shù)字變成了負(fù)值。

          總結(jié)

          DAX 給出位運算是一種非常基礎(chǔ)的計算機(jī)底層運算,它實現(xiàn)了二進(jìn)制世界的關(guān)鍵數(shù)學(xué)運算,一些經(jīng)典的算法和技巧都可以通過位運算來完成,例如 MD5 散列算法等,這些對于業(yè)務(wù)人員來說似乎有些遙遠(yuǎn),不過這為專家級 BI 分析師設(shè)計新的特殊優(yōu)化算法給出了新的工具。我們會在未來的文章中給出這方面的應(yīng)用,讓大家更好的理解位運算。

          Power BI 終極系列課程《BI真經(jīng)》


          BI真經(jīng) - 讓數(shù)據(jù)真正成為你的力量

          掃碼與精英一起討論 Power BI,驗證碼:data2021

          點擊“閱讀原文”進(jìn)入學(xué)習(xí)中心


          瀏覽 54
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产在视频线精品视频www666 | 特黄AAAAAAAA免费看直播 | 超碰在线98 | 毛片链接 | 国产成人性爱视频 |