Java中的int
数据类型有32位,因此,当我们在Java中进行位操作时,它将以32位发生。但是在Python中整数数据类型没有限制,那么在Python中进行多少位操作呢
例如2&;java中的3将在32位中发生,即
0000 0000 0000 0000 0000 0000 0000 0010
&;
0000 0000 0000 0000 0000 0000 0000 0011
但是python中的多少位也会发生同样的情况
也就是说,会吗
10
&11
或
0010
&0011
或者什么
Tags:
这是一个非常有趣的问题。
我不确定答案,但我认为这可能取决于较大数字的位。
例如:
那么输出是:
在b为3的情况下,需要2位
在b为11的情况下,它将占用4位
这就是我观察到的,请告诉我我到底错了没有
如果我错了,请纠正我
在Python3.1之前,没有简单的方法确定Python如何在内部表示特定的整数,即使用了多少位。Python3.1在int类型中添加了一个bit_length()方法,该方法正好实现了这一点
资源 https://wiki.python.org/moin/BitManipulation
产出:5
与其他整数运算一样,位操作具有无限精度
如果您试图匹配其他语言中例程的输出,可以通过使用适当的位掩码将结果钳制到一定数量的位
result & 0xff
表示1个字节,result & 0xffff
表示2个字节,result & 0xffffffff
表示4个字节,等等没有区别
0b10 == 0b0010
和0b11 == 0b0011
。它们是完全相同的数字;左边的零填充不会改变任何东西。你可以把这些数字想象成左边有无穷多个零我向你保证,我不是故意迟钝。你会问,“是A还是B?”答案是,“A和B都是一样的东西。”
在java或C++或C语言或任何其他具有固定宽度整数类型的语言中,它们执行16位或32位或64位操作的事实对代码的行为有明显的影响。输出结果被截断为输入类型的位宽度。您必须始终考虑溢出以及数字可能会如何缠绕。添加两个数字可能会导致较小的数字。固定宽度位操作有一个您必须考虑的可见效果
Python使用无限精度的整数,所以没有这样的东西。是的,如果你偷看一下无限制精度整数库是如何工作的,它会在其中的某个地方使用固定大小的整数。它最终将执行执行32位AND或64位XOR或任何情况的汇编指令。但所有这些都是Python内部的。它对我们用户来说是不可见的。外部可见的行为是整数似乎具有无限精度。我们可以将每个数字视为在概念上左侧有无限多个0位(如果数字为负数,则为无限多个1位)
相关问题 更多 >
编程相关推荐