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

        return Int64(self) //No difference if the platform is 32 or 64
        }
    public static var allOnes:Int32{return Int32(bitPattern: UInt32.max)}
}
extension UInt32 {
    public var toU8: UInt8{ return UInt8(truncatingBitPattern:self)}

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

extension Int8 {
