问题描述
Python 中的整数存储在二进制补码中,对吗?
Integers in Python are stored in two's complement, correct?
虽然:
>>> x = 5
>>> bin(x)
0b101
还有:
>>> x = -5
>>> bin(x)
-0b101
这很蹩脚.如何让 python 给我 REAL 二进制位的数字,并且前面没有 0b?所以:
That's pretty lame. How do I get python to give me the numbers in REAL binary bits, and without the 0b infront of it? So:
>>> x = 5
>>> bin(x)
0101
>>> y = -5
>>> bin(y)
1011
推荐答案
不确定如何使用标准库获得所需的内容.有一些脚本和包可以为您进行转换.
Not sure how to get what you want using the standard lib. There are a handful of scripts and packages out there that will do the conversion for you.
我只是想说明为什么",以及为什么它不蹩脚.
I just wanted to note the "why" , and why it's not lame.
bin() 不返回二进制位.它将数字转换为二进制字符串.根据 python 语言定义,前导 '0b' 告诉解释器您正在处理二进制数.这样你就可以直接使用二进制数,就像这样
bin() doesn't return binary bits. it converts the number to a binary string. the leading '0b' tells the interpreter that you're dealing with a binary number , as per the python language definition. this way you can directly work with binary numbers, like this
>>> 0b01
1
>>> 0b10
2
>>> 0b11
3
>>> 0b01 + 0b10
3
这不是蹩脚的.太好了.
that's not lame. that's great.
http://docs.python.org/library/functions.html#bin
bin(x)
将整数转换为二进制字符串.
Convert an integer number to a binary string.
http://docs.python.org/reference/lexical_analysis.html#integers
整数和长整数文字由以下词法定义描述:
Integer and long integer literals are described by the following lexical definitions:
bininteger ::= "0" ("b" | "B") bindigit+
bininteger ::= "0" ("b" | "B") bindigit+
bindigit ::= "0" |1"
bindigit ::= "0" | "1"
这篇关于Python中的二进制补码?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!