Integer.st
changeset 19061 e549213c01bc
parent 19058 12a9089fbc5e
child 19062 ad646a7ec0b9
--- a/Integer.st	Wed Jan 20 13:21:41 2016 +0100
+++ b/Integer.st	Wed Jan 20 15:39:14 2016 +0100
@@ -2475,6 +2475,12 @@
 
     ^ (self bitAnd:16rFFFFFF) signExtended24BitValue
 
+    "
+     16r800000 signExtended24BitValue
+     16r7FFFFF signExtended24BitValue
+     16rFFFFFF signExtended24BitValue
+    "
+    
     "Modified: / 07-05-1996 / 09:31:57 / cg"
     "Created: / 05-03-2012 / 14:37:55 / cg"
 !
@@ -2485,14 +2491,45 @@
 
     ^ (self bitAnd:16rFF) signExtendedByteValue
 
+    "
+     16r80 signExtendedByteValue
+     16r7F signExtendedByteValue
+     16rFF signExtendedByteValue
+    "
+
     "Created: 7.5.1996 / 09:31:52 / cg"
 !
 
+signExtendedLongLongValue
+    "return a smallInteger from sign-extending the 64'th bit.
+     May be useful for communication interfaces"
+
+    (self bitTest:16r8000000000000000) ifTrue:[
+        ^ (self bitAnd:16rFFFFFFFFFFFFFFFF)-16r10000000000000000
+    ].    
+    ^ (self bitAnd:16r7FFFFFFFFFFFFFFF)
+
+    "
+     16r8000000000000000 signExtendedLongLongValue
+     16r7FFFFFFFFFFFFFFF signExtendedLongLongValue
+     16rFFFFFFFFFFFFFFFF signExtendedLongLongValue
+    "
+!
+
 signExtendedLongValue
     "return a smallInteger from sign-extending the 32'th bit.
      May be useful for communication interfaces"
 
-    ^ (self bitAnd:16rFFFFFFFF) signExtendedLongValue
+    (self bitTest:16r80000000) ifTrue:[
+        ^ (self bitAnd:16rFFFFFFFF)-16r100000000
+    ].    
+    ^ (self bitAnd:16r7FFFFFFF)
+
+    "
+     16r80000000 signExtendedLongValue
+     16r7FFFFFFF signExtendedLongValue
+     16rFFFFFFFF signExtendedLongValue
+    "
 !
 
 signExtendedShortValue
@@ -2501,6 +2538,12 @@
 
     ^ (self bitAnd:16rFFFF) signExtendedShortValue
 
+    "
+     16r8000 signExtendedShortValue
+     16r7FFF signExtendedShortValue
+     16rFFFF signExtendedShortValue
+    "
+
     "Modified: 7.5.1996 / 09:31:57 / cg"
 ! !