英文:
Bitwise not operator doesn't flip bits
问题
我正在尝试使用位非运算符来翻转1中的位。我从1 (00000001) 开始,然后加上 ~。
x = ~1
print(f'{x:08b}')
结果是 -0000010。
所有在线信息都告诉我结果应该是 11111110。不确定在数字前面加 ~ 时我可能出了什么问题。
我尝试添加了一个步骤,以确保1显示为 00000001,它成功了:
a = 1
print(f'{a:08b}')
x = ~a
print(f'{x:08b}')
真的不确定我在哪里出错了...
英文:
I am trying to use the bitwise not operator to flip the bits in 1.
I start with 1 (00000001) and add ~.
x = ~1
print(f'{x:08b}')
Result is -0000010.
Everything online tells me the result should be 11111110. Not sure what I can do wrong with putting ~ in front of a number.
I tried adding a step to make sure 1 shows up as 00000001, and it did:
a = 1
print(f'{a:08b}')
x = ~a
print(f'{x:08b}')
Really not sure how I can go wrong on this...
答案1
得分: 2
"The unary ~ (invert) operator yields the bitwise inversion of its integer argument. The bitwise inversion of x is defined as -(x+1)."
"所以它的行为如预期,打印出“正数的2的补码的负数”。它不会打印出2的补码的负数,因为:https://stackoverflow.com/questions/16255496/format-negative-integers-in-twos-complement-representation"
英文:
https://docs.python.org/3/reference/expressions.html#unary-arithmetic-and-bitwise-operations
> The unary ~ (invert) operator yields the bitwise inversion of its integer argument. The bitwise inversion of x is defined as -(x+1).
So it's behaving as expected, printing "negative-of-a positive 2's complement". It doesn't print in 2's complement negative because: https://stackoverflow.com/questions/16255496/format-negative-integers-in-twos-complement-representation
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论