What number did you expect?
If you have binary string 0001 and you flip all of the zeros to ones you get 1110 which is the number 14.
You do not get 0.
If you want to limit it to fixed number of bits use the MOD() function.
ndigits=1 ;
bnotx=mod(bnot(x),2**ndigits);
Let's look at all 16 possible values of 4 binary digits.
data test;
do x=0 to 7;
bnotx=bnot(x);
bnot4=mod(bnotx,2**4);
put / (3*x 3*bnotx 3*bnot4) ( binary4. +1 hex8. comma14. /);
end;
run;
0000 00000000 0
1111 FFFFFFFF 4,294,967,295
1111 0000000F 15
0001 00000001 1
1110 FFFFFFFE 4,294,967,294
1110 0000000E 14
0010 00000002 2
1101 FFFFFFFD 4,294,967,293
1101 0000000D 13
0011 00000003 3
1100 FFFFFFFC 4,294,967,292
1100 0000000C 12
0100 00000004 4
1011 FFFFFFFB 4,294,967,291
1011 0000000B 11
0101 00000005 5
1010 FFFFFFFA 4,294,967,290
1010 0000000A 10
0110 00000006 6
1001 FFFFFFF9 4,294,967,289
1001 00000009 9
0111 00000007 7
1000 FFFFFFF8 4,294,967,288
1000 00000008 8
... View more