MATLAB的兩種移位運算


MATLAB的兩種移位運算:

 

1)circshift矩陣移位

circshift:循環移位數組

語法:B = circshift(A,shiftize)

說明:

B  = circshift(A,shiftize)通過shiftize元素循環移位數組A中的值。shiftize是整數標量的向量,其中第n個元素指定數組A的第n維的移位量。如果移位中的元素為正,則A的值向下(或向右)移位。如果是負數,則A的值向上(或向左)移動。如果為0,則不移動該維度中的值。

 

示例:

將第一維值向下循環移動1. 
A = [1 2 3; 4 5 6; 7 8 9] 
A = 
     1      2      3 
     4      5      6 
     7      8      9

B =環球(A,1)
B = 
     7      8      9 
     1      2      3 
     4      5      6

 

將第一維值向下循環1,將第二維值向左
循環1. B = circshift(A,[1 -1]); 
B = 
    8      9      7 
    2      3      1 
    5      6      4

 

2)bitshift位移位

bitshift:
移位位指定的位數

 

句法 :

C = bitshift(A,k)
C = bitshift(A,k,n)

 

說明:

C = bitshift(A,k)返回移位了k位的A的值。輸入參數A必須是無符號整數或無符號整數數組。通過k移位與乘以2 ^ k相同。允許k的負值,這對應於向右移位,或者除以2 ^ abs(k)並截斷為整數。如果移位導致C溢出無符號整數類A中的位數,則丟棄溢出位。

C = bitshift(A,k,n)導致任何溢出n位的位被丟棄。n的值必須小於或等於A的無符號整數類的位長(例如,對於uint32,n <= 32)。

而不是使用bithift(A,k,8)或n的另一個冪2,考慮使用bitshift(uint8(A),k)或適當的無符號整數類。

 

例子:


例1 
將1100(12,十進制)移位到左邊的兩位產生110000(48,十進制)。
C = bitshift(12,2)
C = 
   48

 

例2


重復地將無符號16位值的位向左移位,直到所有非零位溢出。跟蹤二進制的進度:
a = intmax('uint16'); 
disp(sprintf(... 
  '初始uint16值%5d是二進制中的%16s',... 
  a,dec2bin(a)))

對於k = 1:16 
  a = bitshift(a,1); 
  disp(sprintf(... 
      'Shifted uint16 value%5d is binary 16s in binary',... 
      a,dec2bin(a)))
  end


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM