如何克服Python的两个补码符号?

时间:2018-11-25 20:12:35

标签: python python-3.x binary

如何克服Python的两个补码表示法,并在最后结果中获得std::variant?可以用数学完成吗?只是已经花了几个小时了...

<!DOCTYPE HTML>
<html <?php language_attributes(); ?>>
<head> 
    <meta charset="<?php bloginfo( 'charset' ); ?>" />
    <meta name="viewport" content="width=device-width">
	<title><?php wp_title( '|', true, 'right' ); ?></title>
	<link rel="pingback" href="<?php bloginfo( 'pingback_url' ); ?>">
        
    <link rel="stylesheet" href="<?php bloginfo('stylesheet_url'); ?>" type="text/css" />
    <link href="https://fonts.googleapis.com/css?family=Lato&amp;subset=latin-ext" rel="stylesheet">

</head>

结果:

<?php get_header(); ?>

<body>
<div class="container">
        
        <div id='logo'><img src="<?php bloginfo( 'template_url' ); ?>/img/logo.png" ></div>
        
        <div id="intro">Dziękujemy za odwiedzenie strony Artystycznej Perspektywy. Zapraszamy do zapoznania się z naszą ofertą:</div>
        
        <div id="select">

            <div id="malarstwo">
                <div class="sign1">
                    <div class="name1">
                        <a href="http://artystycznaperspektywa.com/malarstwo/"><img src="<?php bloginfo( 'template_url' ); ?>/img/malarstwo.jpg" ></a>

                        <a class="link" href="http://artystycznaperspektywa.com/malarstwo/">Malarstwo ścienne</a>
                    </div>
                </div>	
            </div>

            <div id="fotografia">
                <div class="sign2">
                    <div class="name2">
                        <a href="http://artystycznaperspektywa.com/fotografia/"><img src="<?php bloginfo( 'template_url' ); ?>/img/fotografia.jpg" ></a>

                        <a class="link" href="http://artystycznaperspektywa.com/fotografia/">Fotografia</a>
                    </div>
                </div>
            </div>
        </div>

    </div>

    </body>
</html>

2 个答案:

答案 0 :(得分:3)

您也可以使用rjust方法:

output = 0xFFFF
for i in (0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15):
    a = 1 << i
    print('0b' + bin(output^a)[2:].rjust(16,'0'))

@wim指出,您可以使用zfill来填充零:

print('0b' + bin(output^a)[2:].zfill(16))

答案 1 :(得分:1)

要打印带有前导零的二进制数字,请使用字符串格式。例如,以前导零填充请求16位:

print("0b" + format(output^a, "016b"))

如果您有可用的f字符串(Python 3.6及更高版本):

>>> f"0b{output^a:016b}"
'0b0111111111111111'

invert a number without changing the bit length ,这是数学技巧:

>>> n = 7
>>> f"0b{n:b}"
'0b111'
>>> L = n.bit_length()
>>> f"0b{2**L-1-n:0{L}b}"
'0b000'