When assigning values to different data types, when do you assign values based on binary bits and when do you assign values based on values

  c++, question
#include<stdio.h>
 
 int main( void )
 {
 printf( "%x\n", (2 / 1.1) );
 /*
 * output 0xd1745d17
 */
 
 printf( "%lld\n", (2 / 1.1) );
 /*
 * The output is 461086718213150359
 * corresponding to hexadecimal 0x3ffd1745 d1745d17
 */
 
 printf( "%x\n", (int)(2 / 1.1) );
 /*
 * Output 0x1
 */
 
 printf( "%lld\n",(int) (2 / 1.1) );
 /*
 * The output is 4610867178617438209
 * corresponding to hexadecimal 3ffd1745 00000001
 */
 
 return 0;
 }

%d to %f
If you change the title, you’d better say it in the content, or I’ll become my pot if I don’t answer the right question.
I don’t know what you are going to ask, but why did this happen?
If you want to know this result
I can tell you that the reason for this result is that numbers expressed in floating-point numbers are interpreted in integer form (non-explicit or implicit conversion).
In popular terms, you means “you” in English and “you” in pinyin.
Specific you can BaiduIEEE floating point notation.