diff --git a/QrCode.java b/QrCode.java
index 82d20a7..304e2df 100644
--- a/QrCode.java
+++ b/QrCode.java
@@ -375,7 +375,7 @@ public final class QrCode {
 			rem = (rem << 1) ^ ((rem >>> 9) * 0x537);
 		data = data << 10 | rem;
 		data ^= 0x5412;  // uint15
-		if ((data & ((1 << 15) - 1)) != data)
+		if (data >>> 15 != 0)
 			throw new AssertionError();
 		
 		// Draw first copy
@@ -407,7 +407,7 @@ public final class QrCode {
 		for (int i = 0; i < 12; i++)
 			rem = (rem << 1) ^ ((rem >>> 11) * 0x1F25);
 		int data = version << 12 | rem;  // uint18
-		if ((data & ((1 << 18) - 1)) != data)
+		if (data >>> 18 != 0)
 			throw new AssertionError();
 		
 		// Draw two copies
diff --git a/qrcodegen.js b/qrcodegen.js
index 103610a..898c38c 100644
--- a/qrcodegen.js
+++ b/qrcodegen.js
@@ -354,7 +354,7 @@ var qrcodegen = new function() {
 				rem = (rem << 1) ^ ((rem >>> 9) * 0x537);
 			data = data << 10 | rem;
 			data ^= 0x5412;  // uint15
-			if ((data & ((1 << 15) - 1)) != data)
+			if (data >>> 15 != 0)
 				throw "Assertion error";
 			
 			// Draw first copy
@@ -386,7 +386,7 @@ var qrcodegen = new function() {
 			for (var i = 0; i < 12; i++)
 				rem = (rem << 1) ^ ((rem >>> 11) * 0x1F25);
 			var data = version << 12 | rem;  // uint18
-			if ((data & ((1 << 18) - 1)) != data)
+			if (data >>> 18 != 0)
 				throw "Assertion error";
 			
 			// Draw two copies
diff --git a/qrcodegen.py b/qrcodegen.py
index 5f5e739..bd674c8 100644
--- a/qrcodegen.py
+++ b/qrcodegen.py
@@ -294,7 +294,7 @@ class QrCode(object):
 			rem = (rem << 1) ^ ((rem >> 9) * 0x537)
 		data = data << 10 | rem
 		data ^= 0x5412  # uint15
-		assert data & ((1 << 15) - 1) == data
+		assert data >> 15 == 0
 		
 		# Draw first copy
 		for i in range(0, 6):
@@ -324,7 +324,7 @@ class QrCode(object):
 		for _ in range(12):
 			rem = (rem << 1) ^ ((rem >> 11) * 0x1F25)
 		data = self._version << 12 | rem  # uint18
-		assert data & ((1 << 18) - 1) == data
+		assert data >> 18 == 0
 		
 		# Draw two copies
 		for i in range(18):