|
I know basic numbers conversion..but what about this number -16.735.. how to convert this real to binary?
first 8 bits if i am right are 0001000 than how continue conversion for 0.735??
Can i use c++ as help?
|
|
|
|
|
You need to do a bit or research.
How you convert it depends on what you want to do with the end result.
You can have fixed point binary fractions... So, first bunch of bits are the whole number, last bunch are (eg 8 bits) are 256ths. This is quite common in motor controllers, as it makes their fractions into slightly hard integers.
Or you can have a moving "binary" point, so the fraction is represented as: 1.xxxxx * 2^yyyy.
The 1. is not needed to be stored, as it always exists. How many bits you put to xxx's and how many to yyy's is variable. These are called mantissa and exponent , so have fun googling!
Try this:
float d = 1;
BYTE *by = (BYTE*)(&d);
d = 2;
d = 1.1;
d = 1.00001;
Now look at the memory d is stored in (using your debugger) and see how it changes when you put these different numbers in.
Short answer to your question: However you like!
Iain.
I have now moved to Sweden for love (awwww).
If you're in Scandinavia and want an MVP on the payroll (or happy with a remote worker), or need contract work done, give me a job! http://cv.imcsoft.co.uk/[ ^]
|
|
|
|
|
Aljaz111 wrote: I know basic numbers conversion
There's no such thing as number conversion. What you are talking about is converting from one representation (decimal) to another representation (binary). The number itself remains the same. So, your question is not clear: do you have a float and would like to print it's binary representation ? Is that what you are trying to do ? Do you want to learn how floating points number are encoded in binary ?
Please clarify your question.
|
|
|
|
|
Aljaz111 wrote: first 8 bits if i am right are 0001000
Probably no. Usually the sign is the very first bit and usually it is 1 for negative numbers...
Anyway as Iain & Cédric pointed out, your question, as it stands, make no much sense.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
I want to present -16,735 in binary...how should i do it? Lets say manually on list of paper? As i know it goes like this:
1.first you must put 16,735 in binary..you get 00010000 , ...?
2.than you put comma behind 1 and you get exponent 4 so 2^4.
3.next you must read manttis..but how could i read manttis if i don't know how is 735 represented with 1 and 0??
4.we get exponent for 64-bit number 1024+4=1028(10) --> thats 0010 0000 0000 0100.
5. we change first bit to 1 and we get 1 0010 0000 0000 0100 ......? -->here same as in step 3. how to get binary from 0.735??
I hope i made myself clearly now.
When i typed in online numbering calc real number 0735 it gave me this binary..
10111100001010001111010111000010100011110101110000101
53 bits... too much as i think?
|
|
|
|
|
Not being sure that I understand exactly.
The floating point numbers are stored binary in memory already.
Assuming the system is little-endian and the number is 64 bit real and also according to IEEE 754;
double d = -16.735;
char *p = (char *)&d;
p[7] ... p[0]
if you convert 8 hex. digits to ascii-binary,
you' ll get binary representation of the number like below.
1100 .... 1100
if you want to, you can split it into parts.
First bit is sign, next 11 are biased exponent, others are mantissa without first (set) bit. You can also unbias the exponent. If you put a 1 in front of the last 52 bits, you will get the same long string of binary digits in your post for 0.735 same as with online number calculator.
As you may also want to know, there are also some functions (ANSI compatible, i think) in math library, (so <math.h> has to be included).
frexp() function - To split FP number into human readable (10 based) mantissa and exponent parts.
modf() function - To split it into fractional and integer parts.
|
|
|
|
|
Hi,
the easiest way probably is like this for converting val to (sign,exp,mant):
0. threat special values separately (mainly zero); for others do:
1. sign=0;
2. if (val<0) {sign=1; val=-val;}
3. exp=0;
4. while (val>=1) {exp++; val/=2;}
5. while (val<0.5) {exp--; val*=2;}
6. now val is in [0.5,1); we assume you want M bits for mantissa, then:
7. val*=1<<m;
8. mant="(int)val;" this="" will="" give="" exactly="" m="" bits
possible="" deviations:
-="" the="" exponent="" may="" be="" biased="" (e.g.="" always="" add="" 0x80)
-="" step="" 8="" perform="" rounding="" instead="" of="" truncation
-="" 7="" and="" act="" as="" if="" is="" one="" more,="" then="" drop="" highest="" bit="" (as="" it="" set)
=""
<div="" class="ForumSig">Luc Pattyn
I only read code that is properly indented, and rendered in a non-proportional font; hint: use PRE tags in forum messages
Local announcement (Antwerp region): Lange Wapper? Neen!
|
|
|
|
|
Is it -16.735 or -16,735?
-16.735 = -10000.1011110000101000111101011100001010001111010111
-16,735 = -100000101011111
The general procedure is to do integer and fraction part separately.
For integer part N :
1. If N is not zero, divide N by 2
2. If remainder is 1 write down 1, if its 0 write down 0
3. N = N/2 - remainder. Go back to Step 1.
Finally, write the 0 and 1 in reverse order.
Example, N = 40
1. 40/2 = 20. Remainder = 0. Write 0
2. 20/2 = 10. Remainder = 0. Write 0
3. 10/2 = 5. Remainder = 0. Write 0
4. 5/2 = 2 + 1/2. Remainder = 1/2. Write 1
5. 2/2 = 1. Remainder = 0. Write 0
6. 1/2 = 0 + 1/2. Remainder = 1/2. Write 1
Threfore, 40 = 101000
For fraction part F,
1. If F is not zero, Multiply F by 2.
2. If result is greater than or equal to 1, write down 1. F = (F * 2) - 1
3. If result is not greater than 1, write down 1. F = (F * 2)
4. If F > 0 go back to step 1.
Example, F = 0.25
1. 0.25 * 2 = 0.5. Write down 0
2. 0.5 * 2 = 1. Write down 1
Thus 0.25 = 0.01
|
|
|
|
|
Hello,
I have already implemented that my application starts when a file associated with it is doubleclicked in explorer. However, this only works when my program does not run when the doubleklick happens. It then opens the associated file.
I want to implement the same behaviour when my application is already running, i.e. my app is up and waiting, and someone doubleclicks a file associated with it. What's the best way to get that message in my application?
|
|
|
|
|
What currently happens if you double-click a file within Explorer and your app is already running? Does a second instance come up?
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
Sorry, of course I should have mentioned this before: my application is dialog-based, and it is a single-instance application already. That means I use Findwindow when I start my program, and if I find another instance of it running I quit. Instead, I should post some kind of message telling the running instance that I want to open a file instad, this is what I haven't figured out yet.
|
|
|
|
|
Erik wrote: That means I use Findwindow when I start my program...
You should be using a mutex instead. FindWindow() could potentially cause a deadlock situation.
Erik wrote: Instead, I should post some kind of message telling the running instance that I want to open a file instad, this is what I haven't figured out yet.
Are you referring to PostMessage() ?
"Old age is like a bank account. You withdraw later in life what you have deposited along the way." - Unknown
"Fireproof doesn't mean the fire will never come. It means when the fire comes that you will be able to withstand it." - Michael Simmons
|
|
|
|
|
I had a similar problem. I searched CP for "single instance", and the first article that came up was:
Limiting an application to a single Instance - the MFC way[^]
I fixed a small (but pretty nasty) buf in the demo program, and all is good. Read the article, and some of the comments for more information.
Good luck,
Iain.
I have now moved to Sweden for love (awwww).
If you're in Scandinavia and want an MVP on the payroll (or happy with a remote worker), or need contract work done, give me a job! http://cv.imcsoft.co.uk/[ ^]
|
|
|
|
|
We are having Host application which sends file data streams 64 bytes at a time continuously to target through TCP/Ip connection. while sending data if LAN cable is disconnected Target is executing recv(). it is not blocking at recv(). is there any means of getting connection status before executing recv()?
|
|
|
|
|
nvshree87 wrote: is there any means of getting connection status before executing recv()?
What is wrong with calling recv() and evaluating a possible error code with WSAGetLastError() ? There are for example WSAECONNABORTED and WSAECONNRESET to signal an interrupted TCP stream.
/M
|
|
|
|
|
Hi All,
I Tried to change the default icon in MFC by going to the toolbox and editing it and i built the solution.
When i run the application there is no change happening...
I tried searching in the internet .... but i am not able to find anything
So somebody pls tellme howto do it...
Regards,
Hari
|
|
|
|
|
try Resource Files folder ..in your project directory ..its possible to change it
|
|
|
|
|
Can u please be a bit more detailed ...
I opened the directory and the resources folder and CLicked on the icon which says MFC and changed it and built it again ...
But no Luck... it still not working
|
|
|
|
|
You should change the proper image type icon (The application bar shows the 16x16 one).
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
Hey ,
There are 3 16x16 which one should i change!!!
Thanks to Both For the Quick reply
|
|
|
|
|
You should actually change all the images of the icon.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
When we lauch the dialog it actually shows a 32x32 (16 colors) i changed that and it works ...
Thanks,
Hari
|
|
|
|
|
Hi All,
Can anybody give me an example to get the drives of a client pc from a server pc using NetServerDiskEnum.Please specify the first argument i.e LPWSTR servername.
Thanks,
Abinash Mohanty
|
|
|
|
|
Abinash Mohanty wrote: Can anybody give me an example to get the drives of a client pc from a server pc using NetServerDiskEnum.
Was this[^] impossible to find?
|
|
|
|
|
Thanks for your reply.But if I run this example on my pc it retrieves the drives of my pc.Suppose I want to retreive the drives of a pc having name for eg. abc which is connected through LAN to my pc. Please tell me the first parameter of NetServerDiskEnum .
Regards,
Abinash
|
|
|
|