【发布时间】:2023-03-02 22:21:01
【问题描述】:
如何使用 TSQL 进行位运算。
我想向左移动 1 位。最左边的位也应该变成最右边的位。
Eg1:
Declare @a tinyint = 15
--Which is equal to 0000 1111
I need the result to be 30
--Which is equal to 0001 1110
Eg2:
Declare @a tinyint = 16
--Which is equal to 0001 0000
I need the result to be 32
--Which is equal to 0010 0000
或者选择性地反转一点。例如这里反转第 3 位位置
input: 0011 0010
result: 0011 1010
为了便于理解,我以二进制形式显示了输入,实际上输入必须是 int 类型。比如 0001 0000 代表 16。
【问题讨论】:
-
“最左边的位也应该变成最右边的位。”所以你想旋转位?
-
为什么不直接乘以 2? a = a * 2;
-
@DmitryBychenko,所有情况都可以吗?
-
@Jithin:如果位为 1,则可能是溢出,例如“1000 0000”
标签: sql-server tsql sql-server-2012 boolean-operations boolean-algebra