gpt4 book ai didi

mysql - 如何更新二进制数的一位作为切换?

转载 作者:可可西里 更新时间:2023-11-01 08:04:19 24 4
gpt4 key购买 nike

我有这张表:

// numbers
+---------+------------+
| id | numb |
+---------+------------+
| int(11) | bit(10) |
+---------+------------+
| 1 | 1001100111 |
| 2 | 0111000101 |
| 3 | 0001101010 |
| 4 | 1111111011 |
+---------+------------+

我正在尝试更改(切换)第七位的值(从右到左)。所以关注这个数字:

// for example
1001100111
^ seventh digit (rtl)

这是预期的结果:

// new_numbers
+---------+------------+
| id | numb |
+---------+------------+
| int(11) | bit(10) |
+---------+------------+
| 1 | 10<b>1</b>1100111 |
| 2 | 01<b>0</b>1000101 |
| 3 | 00<b>1</b>1101010 |
| 4 | 11<b>0</b>1111011 |
+---------+------------+

我可以像这样更新第七位数字

// set it to zero
UPDATE numbers SET numb = numb & b'1110111111';

但实际上我需要切换它。

  • 如果它是0 则设置它1
  • 如果是1则设置为0

我该怎么做?

最佳答案

通过 XOR ^ 运算完成一点翻转,掩码在您想要切换的位置有 1

之所以可行,是因为 XOR 的真值表如下所示:

  A: 0 0 1 1
B: 0 1 0 1
A^B: 0 1 1 0

注意B1的列:当A中对应的位为0时,结果为1,反之亦然。

切换第七位是这样完成的:

UPDATE numbers SET numb = numb ^ b'0001000000';

关于mysql - 如何更新二进制数的一位作为切换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37073289/

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