         return Int64(bitPattern:self) //No difference if the platform is 32 or 64
         }
     public static var allOnes:UInt64{return UInt64.max}
+    public static var size:Int{return strideof(self)}
+    subscript(index: Int) -> UInt64 {
+        get {
+            return self & (0xFF << index.toU64) >> index.toU64
+        }
+        set(newValue) {
+            self = self | (newValue.toU64 << index.toU64)
+        }
+    }
 }
 
 // MARK: Operators

        return Int64(self) //No difference if the platform is 32 or 64
        }
    public static var allOnes:UInt{return UInt.max}
}

extension Int8 {

        return Int64(self) //No difference if the platform is 32 or 64
        }
    public static var allOnes:UInt16{return UInt16.max}
    public static var size:Int{return strideof(self)}
    subscript(index: Int) -> UInt16 {
        get {
            return self & (0xFF << index.toU16) >> index.toU16
        }
        set(newValue) {
            self = self | (newValue.toU16 << index.toU16)
        }
    }
}

extension Int32 {
