python中的异或操作_Python中的异或和位操作的反转
让我们考虑2位数字:00 = 00 ^ 00 (0 -> 0)
01 = 01 ^ 00 (1 -> 1)
11 = 10 ^ 01 (2 -> 3)
10 = 11 ^ 01 (3 -> 2)
如果y[i]是第i位(小尾数),则从y = x ^ (x >> 1)开始:y[1]y[0] = x[1]x[0] ^ 0x[1] # note: y[1]y[0] means `(y[1] << 1) | y[0]` here
意思是:y[1] = x[1] ^ 0
y[0] = x[0] ^ x[1]
如果我们知道y,那么要得到x:y[i] = (y & ( 1 << i )) >> i
x[1] = y[1] ^ 0
x[0] = y[0] ^ x[1] = y[0] ^ (y[1] ^ 0)
x = (x[1] << 1) | x[0]
可以对n位数进行泛化:def getbit(x, i):
return (x >> i) & 1
def y2x(y):
assert y >= 0
xbits = [0] * (y.bit_length() + 1)
for i in range(len(xbits) - 2, -1, -1):
xbits[i] = getbit(y, i) ^ xbits[i + 1]
x = 0
for i, bit in enumerate(xbits):
x |= (bit << i)
return x
y2x()可以简化为使用不带位数组的数字:def y2x(y):
assert y >= 0
x = 0
for i in range(y.bit_length() - 1, -1, -1):
if getbit(y, i) ^ getbit(x, i + 1):
x |= (1 << i) # set i-th bit
return x
示例print("Dec Gray Binary")
for x in range(8):
y = x ^ (x >> 1)
print("{x: ^3} {y:03b} {x:03b}".format(x=x, y=y))
assert x == y2x(y)
输出Dec Gray Binary
0 000 000
1 001 001
2 011 010
3 010 011
4 110 100
5 111 101
6 101 110
7 100 111
python中的异或操作_Python中的异或和位操作的反转相关推荐
- 计算机中异或操作计算什么意思,异或操作
在各种计算机语言中,如C.C++.java等,使用按位异或的思想执行的操作.异或逻辑的关系是:当AB不同时,输出P=1:当AB相同时,输出P=0."⊕"是异或数学运算符号,异或逻辑 ...
- python同或与异或_python中 “与,或,异或”与C语言的不同
在python中: 按位的运算,都按位的运算,都是把参加运算的数的二进制形式进行运算. 1.与运算:A与B值均为1时,A.B与的运算结果才为1,否则为0 (运算符:&) 2.或运算:A或B值为 ...
- python中函数的作用域_Python中的函数作用域
在python中,一个函数就是一个作用域 name = 'xiaoyafei' def change_name(): name = '肖亚飞' print('在change_name里的name:', ...
- python列表怎么写文件_python中以字典为元素的列表怎么写入文本文件
python如何将列表中的元素添加进字典纵然被命运的铁蹄狠狠践踏,也顽强地长出自己的根芽. 录入自己和另一个人的名字的汉语拼音简写,然后依据标识符中字母的数值两个人,一颗心,依偎的不是爱情而是那小温暖 ...
- python中赋值语句的作用_python中return可以使用赋值语句吗?
在python中,有各种不同类型的语句.一个python程序是由模块构成的;一个模块由一条或多条语句组成;每个语句由不同的表达式组成;表达式可以创建和操作对象.下面来看看python中的语句. 赋值语 ...
- python中round函数参数_python中关于round函数的小坑
round函数很简单,对浮点数进行近似取值,保留几位小数.比如 >>> round(10.0/3, 2) 3.33 >>> round(20/7) 3 第一个参数是 ...
- python里的join方法_python中join()方法介绍
描述 Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串. 语法 join()方法语法: str . join ( sequence ) 参数 sequence -- ...
- python常用函数的用法_python中常用函数整理
1.map map是python内置的高阶函数,它接收一个函数和一个列表,函数依次作用在列表的每个元素上,返回一个可迭代map对象. class map(object):""&qu ...
- python中反斜杠_Python中的正斜杠/与反斜杠\
知识点: 1. "/"左倾斜是正斜杠,"\"右倾斜是反斜杠,可以记为:除号是正斜杠 2. 对于目录分隔符,Unix和Web用正斜杠/,Windows用反斜杠\. ...
最新文章
- PHP气缸种类,气缸分类方法有哪些及气缸的种类
- C# Azure 存储-分布式缓存Redis的新建配置查看
- sxssfworkbook设置单元格格式_用好条件格式,实现数据可视化,尤其是第8个技巧!...
- 10.原码 反码 补码
- 如何把VS Code打造成Java开发IDE?
- async 和 await 的进阶
- oracle11g ogg报价,Oracle11g GoldenGate配置错误OGG-00868 Attaching to ASM server
- unity 角度限制_喵的Unity游戏开发之路 推球:游戏中的物理
- C#.NET 大型通用信息化系统集成快速开发平台 4.6 版本 - SSO单点登录接口
- 以太网的分层架构_以太网矩阵(Ethernet Fabric)简介
- 上次遗留下来的XMLUtil的问题
- 抖音怎么加微信好友?抖音跳转微信的方法
- powerdesigner中把用例关系线设置成直线
- Unity学习笔记(4)-----粒子效果的实现
- DPDKVPP关键技术文档总结
- 云时代下主机安全防护建设,用RS-CDPS就够了
- vue项目获取下拉框选中id_vue获取下拉框值
- Java编程那些事儿74——java.lang包介绍1
- 5月英语——热情还是坚持?
- STM32F103做主控自制无刷电机(BLDC)控制器 有感/无感
热门文章
- [HAOI2009]毛毛虫 dfs
- 2017.9.15 最大数maxnumber 思考记录
- azure kinect三维点云_【干货】三维重建技术综述
- 【人生杂谈】宇宙/暗物质/擎天柱
- python初始化函数_当你学会了Python爬虫,网上的图片素材就开始免费了
- 利用GDB进行远程调试
- pytorch 实现MLP(多层感知机)
- 用html编写勾股定理,一种勾股定理演示器的制作方法
- Hive的伴奏_Position Music顶级背景音乐合集243CD
- Java中各种对象的各种实例化方式