
please wait
x = abs(x);
|
|
I need to set the MSB of a decimal number to 0 |
So i don't know how many bits are there in the binary representation of the number. How can i set its MSB to 0 without having to convert it to binary or doing any long operations? |
|
|
&
to combine the mask with the value you are interested in. Note, it will be most effective on negative numbers. A positive signed integer will already have the leftmost bit set to zero.
|
|
|
|
setting the MSB when the exponents are different won't give consistent results (numerically) |
I read the phrase "decimal number" as "integer". I'm not sure why.. |
I need to set the MSB of a decimal number to 0 |
|
|
|
|
number: 11111111010000111001111010110010 (-12345678) msb_cleared: 01111111010000111001111010110010 (2135137970) ms_set_bit_cleared: 01111111010000111001111010110010 (2135137970) ---------- number: 11111111111111111111100000110000 (-2000) msb_cleared: 01111111111111111111100000110000 (2147481648) ms_set_bit_cleared: 01111111111111111111100000110000 (2147481648) ---------- number: 11111111111111111111111111111111 (-1) msb_cleared: 01111111111111111111111111111111 (2147483647) ms_set_bit_cleared: 01111111111111111111111111111111 (2147483647) ---------- number: 00000000000000000000000000000000 (0) msb_cleared: 00000000000000000000000000000000 (0) ms_set_bit_cleared: 00000000000000000000000000000000 (0) ---------- number: 00000000000000000000000000001100 (12) msb_cleared: 00000000000000000000000000001100 (12) ms_set_bit_cleared: 00000000000000000000000000000100 (4) ---------- number: 00000000101111000110000101001110 (12345678) msb_cleared: 00000000101111000110000101001110 (12345678) ms_set_bit_cleared: 00000000001111000110000101001110 (3957070) ---------- number: 1111111111111111111111111111111111111111010000111001111010110010 (18446744073697205938) msb_cleared: 0111111111111111111111111111111111111111010000111001111010110010 (9223372036842430130) ms_set_bit_cleared: 0111111111111111111111111111111111111111010000111001111010110010 (9223372036842430130) ---------- number: 1111111111111111111111111111111111111111111111111111100000110000 (18446744073709549616) msb_cleared: 0111111111111111111111111111111111111111111111111111100000110000 (9223372036854773808) ms_set_bit_cleared: 0111111111111111111111111111111111111111111111111111100000110000 (9223372036854773808) ---------- number: 1111111111111111111111111111111111111111111111111111111111111111 (18446744073709551615) msb_cleared: 0111111111111111111111111111111111111111111111111111111111111111 (9223372036854775807) ms_set_bit_cleared: 0111111111111111111111111111111111111111111111111111111111111111 (9223372036854775807) ---------- number: 0000000000000000000000000000000000000000000000000000000000000000 (0) msb_cleared: 0000000000000000000000000000000000000000000000000000000000000000 (0) ms_set_bit_cleared: 0000000000000000000000000000000000000000000000000000000000000000 (0) ---------- number: 0000000000000000000000000000000000000000000000000000000000001100 (12) msb_cleared: 0000000000000000000000000000000000000000000000000000000000001100 (12) ms_set_bit_cleared: 0000000000000000000000000000000000000000000000000000000000000100 (4) ---------- number: 0000000000000000000000000000000000000000101111000110000101001110 (12345678) msb_cleared: 0000000000000000000000000000000000000000101111000110000101001110 (12345678) ms_set_bit_cleared: 0000000000000000000000000000000000000000001111000110000101001110 (3957070) |