How to find One's complement of floating point variable ?

Hi,
I used Simulink Bitwise Not operator to find the one's complement of uint8 type variable.
Now I want to find one's complement of float variable (double) using simulink.
Can you please help me on how to perform the task.
Thank you

2 commentaires

What does a 1's complement of a floating point bit pattern even mean to you? How do you intend to use this result?
kintali narendra
kintali narendra le 5 Fév 2021
Modifié(e) : kintali narendra le 5 Fév 2021
I need to convert float variable to binary number and then find one's complement of that, covert it into float variable again.
I am using it for redundancy validation.

Connectez-vous pour commenter.

 Réponse acceptée

Walter Roberson
Walter Roberson le 5 Fév 2021

0 votes

typecast to uint64, take the one's complement, typecast back.
Caution: 1's complement of 0.0 is NaN.

9 commentaires

the simulink model has run successfully but the answer is same for every number.
you used a Convert block which is not appropriate.
You need to use a MATLAB Function Block.
function out = fcn(u)
out = zeros(size(u));
out = typecast(bitxor(typecast(u, 'uint64'), 0xffffffffffffffffu64), 'double');
Thank you. it worked.
My version (2019a) doesn't support Walter's code. What result should be shown in the Display block when the input is 23?
function out = fcn(u)
out = zeros(size(u));
out = typecast(bitxor(typecast(u, 'uint64'), intmax('uint64')), 'double');
kintali narendra
kintali narendra le 8 Fév 2021
Modifié(e) : kintali narendra le 8 Fév 2021
Hi Paul, these are my answers.
For 23 it is -0.1953
For 93 it is -0.04834
When the input is 23, do you want the Display block to show -0.1953? In other words, is -0.1953 the correct answer for 23 with respect to what you are trying accomplish?
From what you've described, I thought the goal was to get the decimal representation of the one's complement of the binary representation of 23. Is that what -0.1953 is?
yes, I want decimal representation of the one's complement.
The function which Walter recommened worked.
@Paul note in particular they wanted the one's complement of the binary representation of double precision numbers, not of an integer data type.

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by