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

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

extension Int64 {

        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 {
