回覆列表
  • 1 # 使用者834195712159

    如果你是用01字串來表示二進位制,那麼matlab有現成的函式circshift可用,方法是:

    circshift(a",-n)"

    只需bai要輸入二進位制字串a和需du要左移的位數n就可以呼叫來得到答案,舉幾個例子:

    >> a = "10011110"; n = 1; circshift(a",-n)"

    ans =

    00111101

    >> a = "10011110"; n = 2; circshift(a",-n)"

    ans =

    01111010

    >> a = "10011110"; n = 3; circshift(a",-n)"

    ans =

    11110100

    >> a = "10011110"; n = 4; circshift(a",-n)"

    ans =

    11101001

    circshift這個函式本身的第二個引數如果為正則右移,如果為負則左移。而且可以用於移位任何維數的矩陣,不是你問的問題,就不多說了。

    如果你不是用01字串,而是用本身的數值的內部二進位制形式,那麼有zhi兩種方法,一種是用dec2bin函式轉換為二進位制字串,在左邊添0擴充套件到你需要的位數,再用如上circshift函式。

    另一種方法是用bitshift函式,不過需要自己判斷資料型別的長度、有符號還是無符號、以及最高位是1還是0,會稍微複雜一些,通常和fi函式配合可以簡化這些問題。具體的可以檢視bitshift和fi函式的文件。

  • 中秋節和大豐收的關聯?
  • 滷肉卷的肉是怎麼滷的肉味道好我媽喜歡吃滷肉?