gpt4 book ai didi

ruby - 翻转位而不得到负数

转载 作者:数据小太阳 更新时间:2023-10-29 07:43:53 27 4
gpt4 key购买 nike

如何在不改变符号的情况下翻转整数的位?例如,如何将 "1010" (1010) 翻转为 "0101" (510) ?

按位负运算符产生负数:~10 (~0b1010) → -11 (0b0101 ).

最佳答案

您可以通过异或翻转位:

    1010 (decimal 10)
XOR 1111 (decimal 15)
= 0101 (decimal 5)

在 ruby 中:

0b1010 ^ 0b1111 #=> 5

1 的数量对应于位数,因此您可以使用:

num  = 0b1010
num ^ (1 << num.bit_length) - 1
#=> 5

关于ruby - 翻转位而不得到负数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35290628/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com