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

MATLAB的两种移位运算的更多相关文章

  1. Matlab提供了两种除法运算:左除(\)和右除(/)

    Matlab提供了两种除法运算:左除(\)和右除(/).一般情况下,x=a\b是方程a*x =b的解,而x=b/a是方程x*a=b的解.例:a=[1  2  3; 4  2  6; 7  4  9]b ...

  2. [JAVA]移位运算(左移<<,右移>>和无符号右移>>>)

    一.背景知识 整数在内存中是以二进制的形式存在的,而且存的是该整数的补码.最高位代表符号位,正数为0,负数为1 正数的补码是其二进制本身,负数的补码则是 符号位保持1不变,其他位按位取反再加1,+0和 ...

  3. 在shell script中进行数值运算的两种方法

    方法1:使用"$((计算式))"的方式进行数值运算,不需要使用declare命令显示声明数值型变量来存储计算结果: 方法2:使用declare命令配合"-i"选 ...

  4. Matlab画平滑曲线的两种方法

    自然状态下,用plot画的是折线,而不是平滑曲线. 有两种方法可以画平滑曲线,第一种是拟合的方法,第二种是用spcrv,其实原理应该都一样就是插值.下面是源程序,大家可以根据需要自行选择,更改拟合的参 ...

  5. Arduino下LCD1602综合探究(上)——1602的两种驱动方式,如何使LCD的控制编程变得更简单

    一.前言: LCD ( Liquid Crystal Display 的简称)液晶显示器,已经逐渐替代CRT成为主流的显示设备之一,因此也成为了单片机发烧友绕不过的话题之一:而LCD1602更是很多单 ...

  6. matlab矩阵合并及相关运算

    1.matlab允许向量(和矩阵)合并,且matlab提供了两种合并方式,[a,b]和[a;b],两者的结果是不一样的. a=rand(2,3): b=rand(2,3): c=[a;b]: d=[a ...

  7. JAVA:二进制(原码 反码 补码),位运算,移位运算,约瑟夫问题(5)

    一.二进制,位运算,移位运算 1.二进制 对于原码, 反码, 补码而言, 需要注意以下几点: (1).Java中没有无符号数, 换言之, Java中的数都是有符号的; (2).二进制的最高位是符号位, ...

  8. Java学习第五篇:二进制(原码 反码 补码),位运算,移位运算,约瑟夫问题

    一.二进制,位运算,移位运算 1.二进制 对于原码, 反码, 补码而言, 需要注意以下几点: (1).Java中没有无符号数, 换言之, Java中的数都是有符号的; (2).二进制的最高位是符号位, ...

  9. 【原创】Java移位运算

    学习移位运算,首先得知道参与移位运算的类型的位数,那先来复习下Java基础类型的占位数吧. Java基础类型 Java基础类型总结一览表 类型 二进制位数 最大值 最小值 初始化值 表示形式 带符号 ...

随机推荐

  1. Java并发编程:Java的四种线程池的使用,以及自定义线程工厂

    目录 引言 四种线程池 newCachedThreadPool:可缓存的线程池 newFixedThreadPool:定长线程池 newSingleThreadExecutor:单线程线程池 newS ...

  2. (4)Jquery1.8.3快速入门_基本选择器

    一.Jquery选择器: 基本选择器: 1.id                           #id      根据元素的id获取的唯一元素. 2.class                  ...

  3. 【Redis】3、Redis集群部署

    Redis 集群是一个提供在多个Redis间节点间共享数据的程序集. Redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间移动数据,从而达不到像Redis那样的性能,在高负载的情况下 ...

  4. jsp-servlet 的相关请求路径问题 —url

    jsp-servlet 的相关请求路径问题  —url 本文章主要解决的几方面问题如下: 常见涉及路径元素: jsp页面请求和servlet请求转发.重定向的关系 如何避免下一步请求受上一步请求在UR ...

  5. Swagger2限定接口范围

    前面在使用Swagger2时遇到的坑中简单介绍了Swagger的使用. 不过默认情况下,Swagger2会把项目中的所有接口都展示在列表里,特别是你用了Springboot/SpringCloud之后 ...

  6. 基于python的websocket开发,tomcat日志web页面实时打印监控案例

    web socket 接收器:webSocket.py 相关依赖 # pip install bottle gevent gevent-websocket argparse from bottle i ...

  7. 【读书笔记】iOS-加速计与陀螺仪

    一,数据的“滤波” 直接从加速度计获得的原始数据,往往不能直接使用,而是需要去除一些干扰数据,这个过程称为“滤波”.“滤波”一词来源于无线电技术中对无线电信号的处理过程.事实上从数学角度而言它们是一样 ...

  8. 从零开始学习html(六)开始学习CSS,为网页添加样式

    一.认识CSS样式 <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type&quo ...

  9. svn下已add文件如何忽略

    正如官方指南所言:TortoiseSVN → Unversion and add to ignore list,取消版本控制并添加至忽略列表. http://www.cnblogs.com/huang ...

  10. VS发布web应用程序报:无法识别的特性“xmlns:xdt”。请注意特性名称区分大小写 或 未能将文件obj\...复制到obj\...未能找到路径

    问题1:无法识别的特性“xmlns:xdt”.请注意特性名称区分大小写 问题2:未能将文件obj\...复制到obj\...未能找到路径 解决办法:将web项目文件下的obj文件夹从项目中排除,然后再 ...