From e7b6163db13d7aae5ada43b3602e279c5ff9121a Mon Sep 17 00:00:00 2001
From: Mattias Andrée <maandree@operamail.com>
Date: Mon, 20 Jan 2014 03:04:51 +0100
Subject: add is power of two
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Signed-off-by: Mattias Andrée <maandree@operamail.com>
---
 src/algorithms/bits/Powers.java | 40 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)
 create mode 100644 src/algorithms/bits/Powers.java

(limited to 'src/algorithms/bits')

diff --git a/src/algorithms/bits/Powers.java b/src/algorithms/bits/Powers.java
new file mode 100644
index 0000000..740399a
--- /dev/null
+++ b/src/algorithms/bits/Powers.java
@@ -0,0 +1,40 @@
+/**
+ * Copyright © 2014  Mattias Andrée (maandree@member.fsf.org)
+ * 
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ * 
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU Affero General Public License for more details.
+ * 
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+package algorithms.bits;
+
+
+/**
+ * Power of 2 interger operations
+ */
+public class Powers
+{
+£<for T in char byte short int long; do
+    /**
+     * Compute whether an integer is a power of two,
+     * note that zero is indeed not a power of two
+     * 
+     * @param   value  The integer
+     * @return         Whether the integer is a power of two
+     */
+    public static boolean isPowerOf2(£{T} value)
+    {
+	return (value & (value - 1)) == 0;
+	/* Or alternatively: (value & -value) == value */
+    }
+£>done
+}
+
-- 
cgit v1.2.3-70-g09d2