我正在学习python中的按位运算符,因此我尝试在shell中进行一些实验。 我尝试使用8位数字进行位操作,这似乎正常工作,但是如果我尝试使用16位数字,则会发生这种情况:

>>> b = 0010000000000000

>>> b

549755813888

如果我尝试更大的数字,那么输出一开始看起来很正常:

a = 1011110110011001

>>> a

1011110110011001

>>> b = 1100001110000101

>>> b

1100001110000101

但是当我应用按位运算符时,例如OR |,,那么我又得到了一个十进制输出。

>>> a | b

1125874135965693

我觉得这很令人困惑。 二进制运算符的结果不应该是二进制吗? 如果是这样,转换在哪里发生? 最后,为什么只有在我尝试使用16位二进制文件时才会发生这种情况?

编辑:尝试8位时,我得到以下内容:

>>> c = 00000001

>>> d = 10000000

>>> c | d

10000001

您没有告诉Python您要输入二进制数;像C一样,Python会将0010000000000000解释为八进制(8 ** 13),并将1011110110011001解释为十进制。请改用0b前缀和bin函数:

>>> a = 0b1011110110011001

>>> b = 0b1100001110000101

>>> bin(a|b)

'0b1111111110011101'

您的8位值(Python也不知道,int通常为32位或64位,但是最新版本将无缝过渡到可以扩展到任意宽度的long值)的值的解释方式完全相同。无论前面有多少个零,无论在哪个底数中,其他数字都是偶数,1都是1。尝试100 | 1000(产生1004)作为一个失败的低示例(实际值为0b1111101000和0b1100100)。

这是有道理的,但是解释器会自动将8位识别为没有0b前缀的二进制吗?

您可能想发布一个您认为可行的8位值的示例。

病态更新问题以包含示例

尽管仅使用1和0,但这不会使您输入的数字成为二进制数:它们是十进制的(如果以0开头,则是八进制的)。

如果要使用二进制数,请在它们前面加上0b(至少假定Python 2.6)。看到这个问题。

如果要打印结果,您可能还会发现bin()很有用。

EDIT: I get the following when trying 8bits:

>>> c = 00000001

>>> d = 10000000

>>> c | d

10000001

您仍然对0b表示法感到困惑。 10000000不是8位数字,它是一个十进制数字,您至少需要24位才能表示它(bin(10000000)是0b100110001001011010000000)。

10000000 | 00000001似乎是"工作"的,就好像它是二进制表示形式一样,是因为00000001(它是八进制表示形式)也恰好是十进制的1。这确实是0b100110001001011010000000 | 0b000000000000000000000001。

例如,00000010是十进制的8,因此10000000 | 00000010将是10000008。如果您的数字以0开头,则为八进制表示形式;如果以0x开头,则为十六进制;如果以0b开头,则为二进制;否则为十进制。

您的特定用例(10000000 | 1)有点运气。尝试10000000 | 1000,您的假设将不再起作用:那就是10000360。

您正在使用的操作是按位的,但是您提供的数字中的1并不代表单个位。

您可能希望看到的是:

>>> bin(0b10000000 | 0b00001000)

'0b10001000'

在这里,您提供的数字是二进制格式(0b...),操作是按位的(其他表示法也是按位的,只是被激活的位不是您认为的那些),然后您将使用bin(...)将其返回为二进制表示形式。

要在Python中编写二进制文字,您需要在文字前加上0b前缀。与a = 0b1011110110011001中一样。有关更多详细信息,请参见此问题。

python按位处理二进制文件_对如何在python shell中对16位二进制数执行按位运算感到困惑...相关推荐

  1. python多线程加速for循环_多线程-如何在Python的循环中对操作进行多线程

    首先,在Python中,如果您的代码受CPU约束,那么多线程将无济于事,因为只有一个线程可以持有全局解释器锁,因此一次只能运行Python代码. 因此,您需要使用进程,而不是线程. 如果您的操作&qu ...

  2. 表示python代码块的是_编写高质量Python代码的59个有效方法,你用过几个

    欢迎点击右上角关注小编,除了分享技术文章之外还有很多福利,私信学习资料可以领取包括不限于Python实战演练.PDF电子文档.面试集锦.学习资料等. 这个周末断断续续的阅读完了<Effectiv ...

  3. python spark进行大数据分析_第2天Python实战Spark大数据分析及调度-RDD编程

    Spark提供的主要抽象是resilient distributed dataset(RDD)弹性分布式数据集,它是跨集群节点划分的元素的集合,可以并行操作.通过从Hadoop文件系统(或任何其他Ha ...

  4. python 的库如何开发_一篇文章入门Python生态系统

    译者按:原文写于2011年末,虽然文中关于Python 3的一些说法可以说已经不成立了,但是作为一篇面向从其他语言转型到Python的程序员来说,本文对Python的生态系统还是做了较为全面的介绍.文 ...

  5. python后端开发学什么_零基础学Python,这是阿里Python8年开发经验写给你的学习路线图...

    今天给大家分享一位前辈整理的一个Python web学习路线.这位前辈由于有编程基础,所以采用了自学Python的方式.学完后主要做后端开发.希望对你有所启发. 整理的一个 python web 学习 ...

  6. python送程序员收入_程序员学Python后惊叹,这么丰厚的收入是Java给不了的!

    原标题:程序员学Python后惊叹,这么丰厚的收入是Java给不了的! 你都用 Python 来做什么?? 发现很多人都在学习 Python ,但是没有明确的说明可以做什么,主流的功能是什么? 想知道 ...

  7. xp支持python最高版本是多少_哪些版本的Python可以在Windows XP中运行?(What versions of Python will work in Windows XP?)...

    哪些版本的Python可以在Windows XP中运行?(What versions of Python will work in Windows XP?) 什么版本的Python可以在Windows ...

  8. python科学计算教程视频_【P14】Python科学计算与图形渲染库视频课程视频教程 it教程...

    Python视频教程名称: Python科学计算与图形渲染库视频课程视频教程 Python视频教程 [IT视频教程网-www.itspjc.com] it教程 6 T6 ^9 L+ E4 C, }0 ...

  9. 趣学python教孩子学编程_《趣学Python——教孩子学编程》学习笔记第1-3章

    第1章 Python不是大蟒蛇 1.1 关于计算机语言 计算机程序是一组让计算机执行某种动作的指令.软件就是计算机程序的集合. 一种编程语言就是一种特定的与计算机交谈的方式,这种方式使用计算机和人都能 ...

最新文章

  1. STM32控制OLCD显示中英文(NB-IoT专栏—基础篇6)
  2. LuManager 高危SQL注入0day分析
  3. python读取文件-python读取大文件
  4. Apache RocketMQ 荣获 2021 中国开源云联盟优秀开源项目
  5. 在家点点接入云信,打造全新社区商业和社交生态
  6. 汇编语言——《子程序应用(数制转换)程序设计》实验报告
  7. UILabel自适应高、宽
  8. 同一个ip能否两次加入组播_组播IGMPv1/v2/v3精华知识汇总
  9. document.createelement如何绑定点击事件_番外篇-EXCEL如何使用宏(VBA)
  10. 在.NET环境禁止别人调用代码
  11. android之统一字体大小
  12. 2010年6月16日最新NOD32激活码和升级ID(含ESS/EAV)
  13. con和com开头单词规律_日语记忆其实很有规律,对于日语初学者你知道这些窍门么...
  14. maskrcnn selected_polygons.append(self.polygons[i]) IndexError: list index out of range
  15. 矩阵旋转(逆时针九十度
  16. 跟熊浩学沟通30讲读后感_跟着熊浩学沟通的笔记
  17. python少儿编程008:海龟绘图画出奥运五连环!
  18. 京东区块链技术实践白皮书(附下载地址)
  19. 完全限定域名(fully qualified domain name,FQDN,笔记)
  20. 2022.08.03 第三组 高小涵

热门文章

  1. m()在php中的意思,计算器上的mc m+ m- mr是什么意思?
  2. mysql8.0日期类型_mysql8.0.19基础数据类型详解
  3. 华为lab-rs-v1-2.4_OSPF提升
  4. VK1S68C中文资料
  5. Java技术学习路线图
  6. XJOI 3866 写什么名字好呢
  7. SpringMVC自定义配置消息转换器踩坑总结
  8. ajax跨域,json,jsonp
  9. 【Linux】监视gpu使用情况
  10. Git(2)-- Git安装后首次配置与第一次使用Git和Github管理自己的代码(超详细纯小白图文教程)