aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Qin <richard.qin.x@gmail.com>2026-09-21 00:35:57 +0800
committerRichard Qin <richard.qin.x@gmail.com>2026-09-21 00:35:57 +0800
commita861dd065647f7ec434a7d4a4c43c30a1577e03a (patch)
tree10882df05e8b999765dfc717d57621c6189856f4
parentc2f527c0f8b9b9f143da7df9343c0f1abef950ff (diff)
downloaddatalab2026-a861dd065647f7ec434a7d4a4c43c30a1577e03a.tar.gz
datalab2026-a861dd065647f7ec434a7d4a4c43c30a1577e03a.tar.xz
fixed UB in logicalShift
-rw-r--r--bits.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/bits.c b/bits.c
index 0bae750..8297011 100644
--- a/bits.c
+++ b/bits.c
@@ -143,7 +143,7 @@ unsigned reverse(unsigned v) {
* Difficulty: 3
*/
int logicalShift(int x, int n) {
- return (x >> n) & ~(((1 << 31) >> n) << 1);
+ return (x >> n) & (~(!n + ~0) | (0x7FFFFFFF >> (n + ~0 + !n)));
}
/*