主頁 > 區塊鏈 > 2.2.2 定點數的移位運算

2.2.2 定點數的移位運算

2020-11-05 11:44:40 區塊鏈

XYXZNB(*^ワ^*)*\(^o^)/*

我們已經知道了定點數在計算機內部如何表示分為無符號數和有符號數啊,其中有負號數可以用元碼補碼,反碼和移碼這樣的4種方式來表示,那么從這個小節開始,我們要學習定點數的相關的運算,應該怎么實作分為移位運算,還有加法減法運算,乘法運算,除法運算,其中一位運算和加減運算的考察頻率是更高的,那這一小節中我們先來學習定點數的一倍運算,怎么實作那移位運算,又可以進一步的劃分為算術移位,邏輯移位,還有回圈移位,我們會按從上至下的順序依次講解,好,那首先來認識一下什么叫做算術移位,我們從大家熟悉的十進制數出發啊,假設這兒有這樣的一個10進制數985.211,那么我們從小經常做的一個事情是讓小數點后移一位或者后移兩位相當于整個數值也就是幾十到二十八小時,次方也就是奇數的一次方,小數點后移兩位,相當于乘以10的二次方,那小數點往前移也是類似的一個效果,只不過往前移的話,那相當于是除以10的一次方和除以10的二次方,這是大家在小學的時候就學會的東西,那如果結合我們之前對R進制數它的實際數值的一個定義來看的話,其實我們移動了小數點之后,相當于改變了每一個數碼位的位權,因為每一個位的位權為多少,其實是以小數點的位置作為參考的,所以所謂的算術移位,算術移位的意思就是我們通過改變各個數碼位和小數點的這種相對位置,從而改變各個數碼位的位權,那我們可以用這種算術移位的方式來等價的實作乘法和除法,這是大家熟悉的實際值,那對于我們之前的小節中學習到二進制數其實也是一樣的,對于定點數來說我們沒辦法改變小數點的位置,但是山不轉,對于定點數來說我們沒辦法改變小數點的位置,但是山不轉可以讓水轉,所以我們如果能夠移動這個數值部分,只要能改變每一個數值位和小數點的相對位置關系,那我們同樣可以實作算術移位的運算,比如這我們已經有了-20這個數的原碼,表示好來看一下進行了算術又移又移了移位之后,啊,得到的這個值應該是2的一次方,再加上23次方也就是等于10,那么在考慮上這個符號位就應該是-10這樣的一個值,所以和我們之前實際是推出的結論是類似的,當我們對二進制的這種定點數右移移位之后,相當于我們實作了除以基數的一次方,這樣的一個操作,那結合這個圖并不難理解,本來以前這兩個一它們的權重分別是2的4次方和2的二次方,那右移一位之后,它們的權重都分別除以了2,一個變成二的三次方,一個變成2的一次方,整體都是這樣縮小了一半, R的三次方,一個變成R的一次方,整體都是這樣縮小了一半,所以這就是算術右移的一個效果,相當于除以2,好我們再用一位,那么剛才這個最低位就會移動到啊,小數點的后面這個位置,由于我們的機器字長有限,所以移出去的這一位我們就只能舍棄不用,那同樣的新的這個高位我們會用0來補充,那這次右移的結果,同樣也是相當于再除以一個2,好繼續在這個基礎上我們再右移一位,那這個時候我們會把末位的一給移出啊,這8個位元的范圍同樣高位補0,不過這個時候得到的值啊,它應該是-2這樣的一個值,已經不是-5÷2的精確表示了,因為-5÷2應該是負的2.5,這樣才是精確的除以2的值,那這是因為我們移出去的這一位,它的值不是0而是1其實相當于我們舍棄了一個進度因此得到這樣的結論當我們進行算術一的時候首先高位,算術右移的時候,首先高位會用0來補充,然后低位直接舍棄,如果我們舍棄的這一位是0的話,那么就相當于嚴謹的除以2的一個結果,而如果我們舍棄的這一位不等于0,那在這種情況下我們會丟失一定的精度好,這是算術又一接下來來看算術左移,那左移的方式也是一樣的,我們只讓這個數值部分進行移動符號位是保持不變的,那進行左移之后,原本數值位的最高位會被我們舍棄,而最低位出現的這些空位,我們會用零來代替,那進行這樣的一次右移之后得到的結果應該是負的40相當于在原有的基礎下乘以2,那如果再做一位也是類似的效果,我們丟棄最高倍的林湘,當于在原有的基礎上再乘以一個2,而我們在做第1位,由于這次我們丟掉的最高位,他是1,所以最終我們得到的結果是等于負的32就不是這樣,這么簡單了,這點其實也很好理解,因為我們原本左移兩位的時候,這個數值就已經到了負的80這樣的一個值,那負的80,如果讓它再乘以2,應該是負的160這么多,而這個地方我們原碼的尾數只有7位,7個位元位只能表示0~127這樣的一個絕對值的范圍,所以160肯定是已經超出7個位元貝能夠表示的范圍,那這種情況下我們丟棄最高位的一拳值最高的那個一被我們丟棄了,當然就會出現這種嚴重的誤差,他們這是對原碼的算術作業需要注意的地方,好的,那目前為止我們探討的啊,算數左翼和算術,右一是基于用原碼表示的定點整數來探討的,那如果不是定點整數而是定點小數,其實也是一樣的道理,一樣的效果當我們進行算術左移的時候,同樣相當于×2的一個效果算術右移,相當于除以2的一個效果所有的這些他們的味全在做,1他們的位權在左移和右移的時候分別會乘以2和除以2好,所以定點小數,我們就不再單獨的探討好,那接下來我們再反基于反馬的算術移位這兒我們已經給出了正20和-20的一個原碼表示那由于正數的反碼表示和原碼表示是一模一樣的,所以對于正數的算術移位,不管是左翼還是右翼處理的方法都適合原始碼一樣啊,這是反碼表示的正數啊,需要采取的一個策略和原始碼是一樣的好再來看復數也就是符號V為1的數這種數的反馬尾數部分和原始碼是完全相反的,一變成00會變成一砝碼的,一相當于原始碼的零砝碼的,0相當于原始碼的1,所以對負數的算術移位,我們進行補位的時候需要注意,我們補的都是伊娜,這是對于反碼的算術移位,正數和負數我們需要補充的這個味是不一樣的,好接下來我們再來看補碼的算術移位,補充的這個味是不一樣的,好,接下來我們再來看無碼的算術移位,那由于正數的補碼表示和原始碼也是一樣的,所以對于正數補碼的移位運算,我們同樣和原始碼保持一樣的策略就可以都是需要用云來補充移動之后出現了空位,而負數補滿的一位會相對來說復雜一些,補碼是從反馬的基礎上末位嘉羿得到的,那反馬的末位加一會導致砝碼當中更靠后的這些一都會變成0,并且都會發生進位,直到進到第1個0這個地方的位置,所以砝碼轉補碼有這樣的一個規律,就是從砝碼的最右邊這一位開始,從右往左依次的取法,把1都變成0,直到碰到第1個0為止,把砝碼的第1個0變成1之后,再往前的這些部分就不用再改變了,所以負數的補碼呈現出了這樣的一個規律,在這個補碼最右邊的一個1,還有這個一這些部分這些,一個一還有這個一你用的這些部分,這些部分是和原始碼保持一致的,而最右邊的這個一左邊的這些部分,這些部分又是和砝碼保持一致的,所以當我們對補碼的這些尾數進行算術右移的時候往右移會導致高位出現一個空位,那我們補這個空位的方法應該是和反碼的啊,補空位規則是保持一致的,也就是補一,而當我們對補碼進行算術左移的時候,最低位會出現一個需要補的空位,那由于補碼的后半部分和原始碼是相同的,所以我們在補這個空位的時候應該補0,因此我們得到結論,對于負數補碼的算術移位,當右移的時候我們應該補一,然后低位審計剛進行算術左移的時候應該低位補0,然后高位舍棄我們就保證the相當于除以2的一個效果,算術左移相當于×2的一個效果好的,那我們在對算術移位進行一個小小的總結,對于正數來說由于原碼補碼反碼啊,他們的正數表示都是一樣的,所以我們需要補位的時候都是用銀趣步,而對于負數來說補碼的負數左1的時候需要填,0右1的時候是要添一而砝碼的復數,不管左一還是右1,我們都是要添一,不管左移還是右移,我們都是要添1那只要遵從這兒給出的規定,無論我們使用的是什么呢,只要我們進行的是算術左移就相當于×2,主要是右移就相當于除以2,只不過由于我們機器自成呃位數有限,所以有的時候我們沒辦法用算術一位精確的來等效乘除法,這一點我們再講原始碼的左移和右移的時候特別的強調過好,接下來用一個簡單的例子讓大家體會一下算術移位的一個呃具體的應用,接下來我們再來看第2種,一位叫做邏輯移位,那邏輯移位的規則很簡單啊,當我們右移的時候高位50,然后低位移出的這一位直接舍棄就可以,左1的時候我們在低位補靈,然后移出的這一位,我們直接手機就可以那邏輯移位的,這種規則我們可以把它看作是對無符號數的算術移位,好,這個規則很簡單,那我們來看一下邏輯移位有什么作用,比如說啊,我們在計算機里面表示一種顏色的時候,經常會使用到這樣的一種表示方式叫做RGB那R指的是right,也就是紅色G表示的是green也就是綠色,而B表示的是鹿也就是藍色,因為我們知道自然界里面所有的顏色都是由紅綠藍這三種三原色來按照一定的配比來組成的,比如對于最后這個顏色啊,它的RGB值就分別是102幺三九幺三九一個像素,那有的時候我們存盤一個像素點,它的RGB值的時候,需要把RGB這三個值把它們連成三個位元組的一個整體第1個位元組存放R,第2個位元組存放距第3個位元組存放B的值,而現在我們只是分開指明了這三個部分的值分別是多少,好那來看一下怎么把它們拼成三個位元組的一個整體可以這么做,首先我們啊申請用三個位元組來存盤無符號數102也就是R的值,那現在我們對這個無符號數進行邏輯左移左移16位,這就會導致第8位移動到高8位的位置,然后左移產生的這些空位,我們都是用靈來補充,這是邏輯左移的一個規定,而接下來我們再定義一個三個位元組的無符號數啊,這個數的值是139,那么我們再對這個無符號數進行邏輯左移8位的操作,就會導致原本的第8位被放到了中間的8個位的位置之后我們再用三個字,的直139好,最后我們再把剛才得到的123這三個部分進行一個家法操作,就可以得到三個位元組表示的RGB值,最高的一個位元組表示的是2職,中間表示的是G也就是綠色的值,然后最后表示的是B blue的值啊,那這是邏輯移位的一個應用的小粒子,接下來我們再來看最后一種移位運算叫做回圈移位啊,顧名思義,所謂回圈就是指當我們進行比如說循,這一位的一個應用的小例子,接下來我們再來看,最后一組一位運算叫做回圈移位啊,顧名思義,所謂回圈就是指當我們進行,比如說回圈左移的時候移出來的這一位會被放到我們需要填補的這個空位在移位的時候整個二進制串是進行回圈補位的,這個應該很好理解,那當我們進行回圈右移的時候,是不是也是類似的,從右邊移出來的這一位又會跑到啊應該補充的那個位置去啊,那還有一種比較特殊的回圈移位,就是在近衛衛的這種情況,先來解釋一下什么叫近衛衛,也就照我們標注的CF這一位進位的概念大家都知道了,比如我們對兩個8位的二進制數進行加法操作,那當我們運算到最高位的時候,1+1是=0,往高位進1,但是由于機器資產有限,暫存器里只能保存8個二進制位確實產生了一個金幣因此為了實作超過八位元的這種資料確實產生了一個金幣因此為了實作超過八位元的這種資料的,超過巴位元的這種呃資料的加法計算機硬體里面會包含這樣的所謂的進位的位來記錄一下之前這些低位的運算有沒有產生進位,把這個進位保留下來之后,我們在進行之后的更高自己的運算的時候,就可以得到正確的結果,0+1,再加上剛才保留的這個進位1,然后用這樣的方式我們就可以不斷的往高位啊進行計算好,所以這就是所謂的進位位的一個作用,總之它里面要么存在一個1,要么存了一個0,好,現在當我們考慮上這個進位之后,再進行回圈左移,產生的效果就是這樣的,就是會把原本數值位的最高位把它放到這個進位位這個地方,而原本的這個進位位會來補充出現了空位這個樣子好,這就是帶進位位的回圈左移那帶進位位的,那帶進位位的回圈右移是不是也是類似的?呃,無非就是把末尾的這個低位放到進位位的位置,而原本的進位原本的進位位,把它放到啊最高位出現空缺的這個位置,噢,那這就是所謂的回圈移位,那回圈移位的操作很適合用于把一個資料的高位元組和低位元組進行一個調換,就比如之前我們講過一個例子啊,這個漢字它需要占兩個位元組的啊這個位置,但是我們可以有大端存盤和小端存盤這樣的兩種方式大端存盤就是先存放高位元組再存放低位元組,而小端存盤是先存放B位元組再存放高位元組,那如果說要在大端存盤和小端存盤之間進行轉換,使用回圈移位是不是就很方便?我們可以回圈右移8位或者回圈左移8倍,就可以實作高低位元組的一個調換 We的一個作用我們學習的一位運算其中最長好的是算數的,我們學習了定點數的移位運算,其中最常考的是算術移位啊,當我們進行算術左移移位的時候,相當于成了一個基數,當我們算術右移移位的時候,相當于除以奇數的效果,那原碼砝碼補碼進行移位之后補位的這個策略是不太一樣的,特別是補滿,大家比較容易忘,需要基于理解來記憶,那么邏輯,一味的實作很簡單,無論是左一還是左,一還是右一都補您就可以,之后我們又學習了回圈移位就是用移出去的未來補上空缺的那個位兒,對于帶鏡柜位的回圈移位,就是移出地為我們會把它放到近衛衛的位置,而原來的精神病會補上空缺的那個位置,就是移出地為我們會把它放到近衛衛的位置,而原來的近衛衛會補上空缺的那個位置,那再次強調由于原碼補碼反碼,他們的為數有限,也就是可以表示的數值范圍是有限的,所以在某些情況下,一味并不能精確的等效乘法和除法的一個效果可能會喪失精度,甚至是產生比較大的誤差,好的,那這就是移位操作相關的所有內容,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/203229.html

標籤:區塊鏈

上一篇:精力有限,學不過來

下一篇:11.3日北礦“曠世之才養成記”研究生生活宣講會記錄

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • JAVA使用 web3j 進行token轉賬

    最近新學習了下區塊鏈這方面的知識,所學不多,給大家分享下。 # 1. 關于web3j web3j是一個高度模塊化,反應性,型別安全的Java和Android庫,用于與智能合約配合并與以太坊網路上的客戶端(節點)集成。 # 2. 準備作業 jdk版本1.8 引入maven <dependency> < ......

    uj5u.com 2020-09-10 03:03:06 more
  • 以太坊智能合約開發框架Truffle

    前言 部署智能合約有多種方式,命令列的瀏覽器的渠道都有,但往往跟我們程式員的風格不太相符,因為我們習慣了在IDE里寫了代碼然后打包運行看效果。 雖然現在IDE中已經存在了Solidity插件,可以撰寫智能合約,但是部署智能合約卻要另走他路,沒辦法進行一個快捷的部署與測驗。 如果團隊管理的區塊節點多、 ......

    uj5u.com 2020-09-10 03:03:12 more
  • 谷歌二次驗證碼成為區塊鏈專用安全碼,你怎么看?

    前言 谷歌身份驗證器,前些年大家都比較陌生,但隨著國內互聯網安全的加強,它越來越多地出現在大家的視野中。 比較廣泛接觸的人群是國際3A游戲愛好者,游戲盜號現象嚴重+國外賬號安全應用廣泛,這類游戲一般都會要求用戶系結名為“兩步驗證”、“雙重驗證”等,平臺一般都推薦用谷歌身份驗證器。 后來區塊鏈業務風靡 ......

    uj5u.com 2020-09-10 03:03:17 more
  • 密碼學DAY1

    目錄 ##1.1 密碼學基本概念 密碼在我們的生活中有著重要的作用,那么密碼究竟來自何方,為何會產生呢? 密碼學是網路安全、資訊安全、區塊鏈等產品的基礎,常見的非對稱加密、對稱加密、散列函式等,都屬于密碼學范疇。 密碼學有數千年的歷史,從最開始的替換法到如今的非對稱加密演算法,經歷了古典密碼學,近代密 ......

    uj5u.com 2020-09-10 03:03:50 more
  • 密碼學DAY1_02

    目錄 ##1.1 ASCII編碼 ASCII(American Standard Code for Information Interchange,美國資訊交換標準代碼)是基于拉丁字母的一套電腦編碼系統,主要用于顯示現代英語和其他西歐語言。它是現今最通用的單位元組編碼系統,并等同于國際標準ISO/IE ......

    uj5u.com 2020-09-10 03:04:50 more
  • 密碼學DAY2

    ##1.1 加密模式 加密模式:https://docs.oracle.com/javase/8/docs/api/javax/crypto/Cipher.html ECB ECB : Electronic codebook, 電子密碼本. 需要加密的訊息按照塊密碼的塊大小被分為數個塊,并對每個塊進 ......

    uj5u.com 2020-09-10 03:05:42 more
  • NTP時鐘服務器的特點(京準電子)

    NTP時鐘服務器的特點(京準電子) NTP時鐘服務器的特點(京準電子) 京準電子官V——ahjzsz 首先對時間同步進行了背景介紹,然后討論了不同的時間同步網路技術,最后指出了建立全球或區域時間同步網存在的問題。 一、概 述 在通信領域,“同步”概念是指頻率的同步,即網路各個節點的時鐘頻率和相位同步 ......

    uj5u.com 2020-09-10 03:05:47 more
  • 標準化考場時鐘同步系統推進智能化校園建設

    標準化考場時鐘同步系統推進智能化校園建設 標準化考場時鐘同步系統推進智能化校園建設 安徽京準電子科技官微——ahjzsz 一、背景概述隨著教育事業的快速發展,學校建設如雨后春筍,隨之而來的學校教育、管理、安全方面的問題成了學校管理人員面臨的最大的挑戰,這些問題同時也是學生家長所擔心的。為了讓學生有更 ......

    uj5u.com 2020-09-10 03:05:51 more
  • 位元幣入門

    引言 位元幣基本結構 位元幣基礎知識 1)哈希演算法 2)非對稱加密技術 3)數字簽名 4)MerkleTree 5)哪有位元幣,有的是UTXO 6)位元幣挖礦與共識 7)區塊驗證(共識) 總結 引言 上一篇我們已經知道了什么是區塊鏈,此篇說一下區塊鏈的第一個應用——位元幣。其實先有位元幣,后有的區塊 ......

    uj5u.com 2020-09-10 03:06:15 more
  • 北斗對時服務器(北斗對時設備)電力系統應用

    北斗對時服務器(北斗對時設備)電力系統應用 北斗對時服務器(北斗對時設備)電力系統應用 京準電子科技官微(ahjzsz) 中國北斗衛星導航系統(英文名稱:BeiDou Navigation Satellite System,簡稱BDS),因為是目前世界范圍內唯一可以大面積提供免費定位服務的系統,所以 ......

    uj5u.com 2020-09-10 03:06:20 more
最新发布
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:46:47 more
  • Hyperledger Fabric 使用 CouchDB 和復雜智能合約開發

    在上個實驗中,我們已經實作了簡單智能合約實作及客戶端開發,但該實驗中智能合約只有基礎的增刪改查功能,且其中的資料管理功能與傳統 MySQL 比相差甚遠。本文將在前面實驗的基礎上,將 Hyperledger Fabric 的默認資料庫支持 LevelDB 改為 CouchDB 模式,以實作更復雜的資料... ......

    uj5u.com 2023-04-16 07:28:31 more
  • .NET Core 波場鏈離線簽名、廣播交易(發送 TRX和USDT)筆記

    Get Started NuGet You can run the following command to install the Tron.Wallet.Net in your project. PM> Install-Package Tron.Wallet.Net 配置 public reco ......

    uj5u.com 2023-04-14 08:08:00 more
  • DKP 黑客分析——不正確的代幣對比率計算

    概述: 2023 年 2 月 8 日,針對 DKP 協議的閃電貸攻擊導致該協議的用戶損失了 8 萬美元,因為 execute() 函式取決于 USDT-DKP 對中兩種代幣的余額比率。 智能合約黑客概述: 攻擊者的交易:0x0c850f,0x2d31 攻擊者地址:0xF38 利用合同:0xf34ad ......

    uj5u.com 2023-04-07 07:46:09 more
  • Defi開發簡介

    Defi開發簡介 介紹 Defi是去中心化金融的縮寫, 是一項旨在利用區塊鏈技術和智能合約創建更加開放,可訪問和透明的金融體系的運動. 這與傳統金融形成鮮明對比,傳統金融通常由少數大型銀行和金融機構控制 在Defi的世界里,用戶可以直接從他們的電腦或移動設備上訪問廣泛的金融服務,而不需要像銀行或者信 ......

    uj5u.com 2023-04-05 08:01:34 more
  • solidity簡單的ERC20代幣實作

    // SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.7.0 <0.9.0; import "hardhat/console.sol"; //ERC20 同質化代幣,每個代幣的本質或性質都是相同 //ETH 是原生代幣,它不是ERC20代幣, ......

    uj5u.com 2023-03-21 07:56:29 more
  • solidity 參考型別修飾符memory、calldata與storage 常量修飾符C

    在solidity語言中 參考型別修飾符(參考型別為存盤空間不固定的數值型別) memory、calldata與storage,它們只能修飾參考型別變數,比如字串、陣列、位元組等... memory 適用于方法傳參、返參或在方法體內使用,使用完就會清除掉,釋放記憶體 calldata 僅適用于方法傳參 ......

    uj5u.com 2023-03-08 07:57:54 more
  • solidity注解標簽

    在solidity語言中 注釋符為// 注解符為/* 內容*/ 或者 是 ///內容 注解中含有這幾個標簽給予我們使用 @title 一個應該描述合約/介面的標題 contract, library, interface @author 作者的名字 contract, library, interf ......

    uj5u.com 2023-03-08 07:57:49 more
  • 評價指標:相似度、GAS消耗

    【代碼注釋自動生成方法綜述】 這些評測指標主要來自機器翻譯和文本總結等研究領域,可以評估候選文本(即基于代碼注釋自動方法而生成)和參考文本(即基于手工方式而生成)的相似度. BLEU指標^[^?88^^?^]^:其全稱是bilingual evaluation understudy.該指標是最早用于 ......

    uj5u.com 2023-02-23 07:27:39 more
  • 基于NOSTR協議的“公有制”版本的Twitter,去中心化社交軟體Damus

    最近,一個幽靈,Web3的幽靈,在網路游蕩,它叫Damus,這玩意詮釋了什么叫做病毒式營銷,滑稽的是,一個Web3產品卻在Web2的產品鏈上瘋狂傳銷,各方大佬紛紛為其背書,到底發生了什么?Damus的葫蘆里,賣的是什么藥? 注冊和簡單實用 很少有什么產品在用戶注冊環節會有什么噱頭,但Damus確實出 ......

    uj5u.com 2023-02-05 06:48:39 more