首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

列表位移位操作不是可交换的?

列表位移位操作不是可交换的。位移位操作是指将一个数的二进制表示向左或向右移动指定的位数。在列表中,位移位操作的结果取决于操作的顺序。

当进行多次位移操作时,操作的顺序会影响最终的结果。具体来说,将一个数向左位移n位,然后再向右位移n位,结果可能与原始数不同。这是因为向左位移会在右侧添加0,而向右位移会将右侧的位丢弃。

例如,对于列表1, 2, 3, 4, 5,进行向左位移和向右位移操作:

  1. 向左位移2位:3, 4, 5, 0, 0
  2. 向右位移2位:0, 0, 3, 4, 5

与之相反,如果先进行向右位移再进行向左位移操作:

  1. 向右位移2位:0, 0, 1, 2, 3
  2. 向左位移2位:1, 2, 3, 0, 0

可以看到,两种操作顺序得到的结果是不同的。因此,列表位移位操作不是可交换的。

在实际应用中,列表位移位操作常用于循环移位、数据加密、图像处理等领域。腾讯云提供了丰富的云计算服务,如云服务器、云数据库、云存储等,可以满足各种应用场景的需求。具体产品信息和介绍可以参考腾讯云官方网站:https://cloud.tencent.com/

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

移位操作符与操作

操作符分类 算数操作符: + 、- 、* 、/ 、% 移位操作符: > 操作符: & | ^ 赋值操作符: = 、+= 、 -= 、 *= 、 /= 、%= 、>= 、&= 、|=...移位操作符: >>, << ‘<<’ 左移操作符 ‘>>’ 右移操作符 注:移位操作操作数只能是整数。 1....右移操作符号 移位规则:首先右移运算分两种: 逻辑右移:左边用0填充,右边丢弃 算术右移:左边用原该值符号填充,右边丢弃 #include int main() { int num...= %d\n",count); return 0; } //这种⽅式是不是很好?..., 其中移位操作符与操作符运用场景很多, 一些变态面试题也会涉及, 但是如果我们能够熟练运用起来移位操作符, 或许就会有意外收获, 这也许就是c语言强大之所在, 有如此多操作符供编程人员使用

4010

操作符和移位操作

今天主要了解一下按操作符和移位操作符,因为看源码时候经常会遇到,之前有点不明白,趁着这次机会学习一下。 按操作符 按操作符是用来操作整数基本类型中的当个“比特”,即二进制。...移位操作移位操作操作对象也是二进制”。移位操作符只能用来操作整数类型。 左移位操作符 << 左移位操作符能按照右侧指定位数将操作符左边操作数向左移动,在低位补0。...十进制中1进制表示为: 0000 0001当执行 1 << 4,将其向左移动4,得到: 0001 0000换算十进制就是16 右移位操作符 >> 右移位操作符按照操作符右侧指定位数将操作符左边操作数向右移动...右移操作符使用“符号扩展”,主要表现为: (1)如果符号为正,则在高位插入0; (2)如果符号为负,则在高位插入1; 还有一种无符号移位操作符 >>> ,使用零扩展,无论正负,都在高位插入0。...25二进制为: 00011001当执行 25 >> 2,将其向右移动2,得到: 00000110换算十进制就是6 下面看下无符号移位,-25二进制表示为: 11111111111111111111111111100111

46720
  • 【C语言】移位操作符详解

    对于C语言中操作介绍首先我们要先了解一些预备知识 1.⼆进制和进制转换 其实2进制、8进制、10进制、16进制是数值不同表⽰形式⽽已。...原因在于,使⽤补码,可以将符号和数值域统处理;同时,加法和减法也可以统⼀处理(CPU只有加法器)此外,补码与原码相互转换,其运算 过程是相同,不需要额外硬件电路. 3.移位操作符(对于数值二进制操作...) << 左移操作符 >> 右移操作符 注: 移位操作操作数只能是 整数 。...算术 右移:左边⽤原该值符号填充,右边丢弃 注: 对于移位运算符,不要移动负数位,这个是标准未定义。...只要有一个1则为1,其余为0) ③按异或^ 相异为真(01则为1,其余为0) ④按取反~ 取相反值就行 5.结语 移位操作符是c语言学习中一个难点,其关键在于对于二进制了解与使用,熟悉各种操作使用规则

    17010

    【C语言】操作符与移位操作符练习

    前言: 前篇我们学习过C语言移位操作符详解【C语言】移位操作符详解-CSDN博客 这篇博客将带领大家继续练习相关知识。 1.一道变态面试题 不允许创建临时变量,交换两个整数内容。...解析:通过上节我们学习移位操作符,我们可以大概知道需要用到它们。...方法一: 解析:我们知道按与是同真为真也就是二进制中都是1才为1,只要有一个不为1就是0; 所以如果我们将n按与1(1二进制除了最后一其他都是0),那么我们就可以知道n最后一是1还是0了,如果再通过右移操作符将...0; } 这里要注意两点: (1)n&(n-1)后要将它值赋给n,而不是将n-1赋给n; n = n & (n - 1); (2)最后n&(n-1) = 0时while已经出了循环,所以最后count...3.打印整数二进制奇数位和偶数位 思路: 1.提取所有的奇数位,如果该位是1,输出1,是0则输出0 2.以同样方式提取偶数位置(我们可以用移位操作符来提取) 检测num中某一是0还是1方式:

    10010

    JAVA中有趣移位操作

    有哪些容易被遗漏细节? 上次介绍了JAVA中有趣运算,知道了运算是直接对一个整形二进制进行操作,效率上比起加减乘除高不少,因此常运用在对性能很敏感场景。 今天介绍在二进制下移位操作。...JAVA中也一样,存储和移位操作都是补码,正数时都一样,负数时就要注意了。 << 左移位 在二进制格式下,把所有的数字向左移动指定位数,左边高位移出(舍弃),右边低位多出来空位补0。... -6 */ >> 右移位 在二进制格式下,把所有的数字向右移动指定位数,低位移出(舍弃),高位空位补符号,即正数补0,负数补1(想想负数存补码和原码是不同)。...以int为例,如果直接左移36,结果并不是0,而是等同于左移36%32=4。 右移和无符号右移也同样适用。...左移操作相当于乘2,右移相当于除2,不全是 左移操作可能改变正负,因为符号会被移走,新符号不一定和以前一样 右移操作不改变符号,因为左边填充是符号 无符号右移会把负数变成正数 没有无符号左移

    1.5K30

    移位操作之(<< >>)和(<<< >>>)区别

    两个箭头 > 是有符号移位 << 表示左移,不分正负数,低位补0; 正数:r = 20 << 2 20二进制补码:0001 0100 向左移动两后:0101 0000 结果:r =...80 负数:r = -20 << 2 -20 二进制原码 :1001 0100 -20 二进制反码 :1110 1011 -20 二进制补码 :1110 1100 左移两补码:1011...:0001 0100 向右移动两后:0000 0101 结果:r = 5 负数:r = -20 >> 2 -20 二进制原码 :1001 0100 -20 二进制反码 :1110 1011...-20 二进制补码 :1110 1100 右移两补码:1111 1011 反码:1111 1010 原码:1000 0101 结果:r = -5 三个箭头 >>> 是无符号移位...右移n位相当于除以2n次方。 运算符优先级~优先级最高,其次是>和>>,再次是&,然后是^,优先级最低是|。

    51030

    Java中有趣移位操作!彻底弄懂各个移位操作使用方式

    注意 三种移位运算作用操作数有五种: long int short byte char 在作用不同操作数类型时具体操作过程不同,遵循以下原则: int移位时, 左操作数是32,此时移位符号作用在...32bit上 比如: 1 >> 3,是将00000000 00000000 00000000 00000001这32向右移动3 long移位时,左操作数是64,此时移位符号作用在64bit上...11111111这32向右移动7,得到结果是00000001 11111111 11111111 11111111 由上可知: 当左操作数为long时,移位之后得到类型是long 当左操作数是其它四种类型时...其实是将得到int做低位截取得到数值,得到值往往会错 三种移位符号除了对左操作数有操作规则外,对右操作数也有操作规则: 如果左操作数是int或者转换之后是int, 那么右操作数只有低5有效,因为...int总共就32 22 >> 33 与 22 >> 1 结果是一样,都是11 如果左操作数是long, 那么右操作数只有低6有效

    68930

    【C语言】中操作符和移位操作符,原码反码补码以及进制之间转换

    2、反码 将原码符号不变,其他依次按取反 3、补码 反码+1 三、操作符 1、操作符 &按操作符 按操作符用于取两个操作与结果。...&& 是逻辑操作符,表示逻辑与 当然&也表示取地址操作符 |按操作符 按操作符用于取两个操作或结果。...|| 是逻辑操作符:逻辑或 ^按异或操作符 按异或操作符用于取两个操作异或结果 规则:只有当两个对应二进制不相同时,结果为1;否则结果为0。...,其原反补码相同,其实计算机数据计算是通过补码来进行,将补码进行运算后再转化成原码 在这里得到结果为-(8+2+1)= -11 2、移位操作操作数只能为整数 <<左移操作移位规则:左边抛弃...main() { int a = 10; int b = a << 1; printf("%d\n", a); printf("%d\n", b); return 0; } 通过观察我们发现,移位操作符也不会改变被操作大小

    10010

    c语言中移位操作

    功能:将整型数a按二进制向右移动m,低位移出后,高位补0 C语言中移位操作,内容不多。只是有些地方你不注意,就疏忽了。 闲话少说,先做两个小题先。...程序运行时候,操作是数值编码表示,也就是数值在内存中二进制表示。比方说, 程序取-3时候,就去取11111101。...(1)对无符号数3来说,x<<1往左移一,最左边位移掉了,最右边移进来补零。...(2)对于有符号数3来说,x<<1往左移一,最左边位移掉了,最右边移进来补零。...总结:左移时总是移位和补零。右移时无符号数是移位和补零,此时称为逻辑右移; 而有符号数大多数情况下是移位和补最左边(也就是补最高有效),移几位就补几位,此时称为算术右移。

    61010

    浅谈程序设计中操作什么是操作操作常用技巧操作应用,常见算法题小结

    而且,在面试或者笔试中,考察基本操作应用越老越普遍,所以掌握操作基本操作和应用很有必要。...什么是操作 我们都知道数据在计算机存储形式是二进制数据,操作就是一种在二进制层面操作数据方法,操作直接操作0,1构成二进制数据。...,不是,就直接返回。...操作实现A+B操作是常见算法题。...小结 我们先从六种基本操作入手,然后介绍了操作常用技巧,判断奇偶,求绝对值,交换符号,交换两个数。最后根据常用算法题中,利用操作实现两个数相加。基本总结了操作简单应用。

    55610

    Python中列表操作

    列表基本详情 用中括号包含内容 可修改数据类型 支持嵌套 支持索引、切片、乘加运算、成员检查、长度、最小值、最大值 列表赋值到变量 list1 = ['hello', 'world'] 列表中追加内容...# 只能追加到列表尾部 列表中插入内容 list1 = ['hello', 'world'] list1.insert(1,',') # 指定索引位置插入内容 列表列表嵌套 list1...# 若内容不在列表中,则会报错 打印列表指定内容次数 list1 = ['a', 'b', 'c', 1, 2, 3, [11, 22, 33]] print(list1.count('a')) 列表排序...= ['zhangsan', 'lisi', 'wangwu'] str1 = ','.join(list1) 注意事项:列表中所有的增删改操作都是直接改原内存地址,并不需要通过重新赋值;元组属于特殊列表...(只读列表),除了增删改操作,其他列表支持操作元组都支持。

    3.4K10

    python中列表操作

    列表可以包含任何种类对象(数字、字串、甚至嵌套其他列表,可以嵌套元组) 内部包含:任意对象有序集合,通过索引访问其中元素,可变对象,支持异构(包含多种不同元素),任意嵌套 支持在原处修改:...列表可变表现为:其内部每一个元素,存储在列表不是对象本身,而是对象引用,其修改其实是修改引用,而不是真正修改了内部某个对象。...解释: ["this","is","a","pig"] 这里并不是存放了"this",而是在内存中找个了地方存放"this",只是把"this"存储位置存放在这个列表当中。 ?...['x', 'y', 'z'] list1 [1, 2, 3] list1 * 3 [1, 2, 3, 1, 2, 3, 1, 2, 3] in 操作符:成员关系判断符 判断一个元素,是不是在一个列表当中...对任意Python对象进行深度复制操作

    3.8K10

    python之列表,python列表所有详细操作

    列表所有操作 列表创建 方法一 list = [1,2,3] 方法二 使用list()函数 list = list() range()函数用法 range(start,end,step)...start :起始值 end:到end -1 结束 step:相邻两个数之间相差step个 列表索引和切片 索引 索引分为正向索引和反向索引。...索引起始值是0。 切片 列表切片可以从列表中取得多个元素并组成一个新列表。...运算符    说明 +    列表连接,合并两个列表 *    复制列表元素 []    索引列表元素 [ : ]    对列表进行切片 in    如果列表中包含给定元素,返回True...insert(index,obj)    将元素obj添加到列表index位置处。 append()函数,添加到列表最后。

    19120

    AS3中操作

    介绍AS3中常见运算技巧。 在AS3中操作是非常快,这里列出一些可以加快某些计算速度代码片段集合。...我不会解释什么是运算符,也不会解释怎么使用他们,只能告诉大家如果想清楚其中原理先认真学一下2进制....尽管如此操作版本在AS2中工作更好 x = int(1.232) //相当于: x = 1.232 >> 0; 提取颜色组成成分 不完全是个技巧,是正常方法 (Not really a trick...,取模操作可以这样做: 模数= 分子 & (除数 - 1); 这里大约快了600% x = 131 % 4; //相当于: x = 131 & (4 - 1); 检查是否为偶数(Check if...This is 35% faster. eqSign = a * b > 0; //equals: eqSign = a ^ b >= 0; 快速颜色转换从R5G5B5 到 R8G8B8 象素格式用移位

    41110

    Python编程 列表操作(2)

    座右铭:低头赶路,敬事如仪 个人主页:网络豆主页​​​​​​ 目录  前言 一.列表(list) 1.列表特殊操作(熟悉) 2.常用内置函数(熟悉) 3.列表排序与反转(熟悉) 4.列表切片...(重点掌握) ----  前言 本章将会讲解Python编程中列表特殊操作,排列与翻转,列表切片等知识。...一.列表(list) 1.列表特殊操作(熟悉) 注意: 不是对应位置相加。...而是拼接 注意:成员判断 返回布尔值 #快速取出每一个元素 li = [1,2,3] for i in li: print(i) ---- 注意: 列表列表不能相乘...————>降序 li_3.sort(reverse=True) print(li_3) #[34, 10, 7, 6, 5, 4, 4, 2, 1] 4.列表切片(重点掌握) 切片模式

    31220
    领券