04-16-2019, 05:02 PM
04-16-2019, 07:16 PM
R->B() will convert an integer to binary - if your base is set to 2.
I don't know that it can convert floating point.
I don't know that it can convert floating point.
04-16-2019, 10:27 PM
I try this in XCas:
bits(x) := convert(convert(trunc(x),base,2),base,10)
x = exact(3.2672) -> 2042/625
bits(x * 2^22) -> 110100010001100111001110
3.2672 ~ 0b11.0100010001100111001110 (24 bits)
For *exact* conversion, we need to get number of repeated bits:
order(a,n) := {local k=0, t=1 mod n; repeat t*=a; k++ until t=1; k}
Since denominator is odd, we can get repeated bits = order(2,625) = 500
bits(x * 2^500), we got:
x = 0b11.(
01000100011001110011100000011101011111011011111101
00100001111111110010111001001000111010001010011100
01110111100110100110101101010000101100001111001001
11101110110010111111101100010101101101010111001111
10101010110011011001111010000011111001000010010110
10111011100110001100011111100010100000100100000010
11011110000000001101000110110111000101110101100011
10001000011001011001010010101111010011110000110110
00010001001101000000010011101010010010101000110000
01010101001100100110000101111100000110111101101001)
bits(x) := convert(convert(trunc(x),base,2),base,10)
x = exact(3.2672) -> 2042/625
bits(x * 2^22) -> 110100010001100111001110
3.2672 ~ 0b11.0100010001100111001110 (24 bits)
For *exact* conversion, we need to get number of repeated bits:
order(a,n) := {local k=0, t=1 mod n; repeat t*=a; k++ until t=1; k}
Since denominator is odd, we can get repeated bits = order(2,625) = 500
bits(x * 2^500), we got:
x = 0b11.(
01000100011001110011100000011101011111011011111101
00100001111111110010111001001000111010001010011100
01110111100110100110101101010000101100001111001001
11101110110010111111101100010101101101010111001111
10101010110011011001111010000011111001000010010110
10111011100110001100011111100010100000100100000010
11011110000000001101000110110111000101110101100011
10001000011001011001010010101111010011110000110110
00010001001101000000010011101010010010101000110000
01010101001100100110000101111100000110111101101001)