二進位制翻轉

2022-09-23 21:21:14 字數 492 閱讀 5042

有的時候我們為了方便對於低位進行操作,我們要把二進位制數翻轉過來,這樣可以避免使用大量的取模操作。

直接入正題

我們要求 \([0,2^)\) 的區間中的每乙個翻轉。

首先要知道的是什麼叫乙個 \(a\) 進製數的翻轉。

我們以 \(2\) 進製為例,\((x_...x_x_x_)_\),它的翻轉就是 \(rev(x_...x_x_x_)_=(x_...x_x_x_)\)

我們考慮線性求解這個東西。

發現對於乙個數 \(t\),其翻轉

\[rev(x_...x_x_x_)_=(x_<>1)

\]相當於是把已求出的答案,通過在高位加數的方式得到新的答案

可以發現下方的公式,那麼顯然我們就可以從小到大線性求了

for(int i=0;i>1]>>1)|((i&1)?n>>1:0);

}

需要注意的是,\(n\) 需要是二的整數冪次,不然就不能獲得能讓人能理解的答案。

二進位制翻轉

編寫函式 unsigned int reverse bit unsigned int value 這個函式的返回值是value的二進位制位模式從左到右翻轉後的值。如 在32位機器上25這個值包含下列各位 00000000000000000000000000011001 翻轉後 2550136832 ...

二進位制 二進位制起源

現代通訊技術的基礎是二進位制編碼。早在1865年麥克斯韋總結出麥克斯韋方程組之前,美國人摩斯 morse 於1837年發明了摩斯電碼和有線電報。有線電報的出現,具有劃時代的意義 它讓人類獲得了一種全新的資訊傳遞方式,這種方式 看不見 摸不著 聽不到 完全不同於以往的信件 旗語 號角 烽火,這也是二進...

二進位制位的翻轉函式

編寫函式 unsigned int reverse bit unsigned int value 這個函式的返回值是value的二進位制位模式從左到右翻轉後的值。如 在32位機器上25這個值包含下列各位 00000000000000000000000000011001 翻轉後 2550136832 ...