Sponsored Content
Homework and Emergencies Homework & Coursework Questions Splitting a numbers binary representation for a double. Post 302665547 by agama on Monday 2nd of July 2012 10:03:19 PM
Old 07-02-2012
Glad you figured that out. I was in the process of replying and when I refreshed saw your addition.

The warning must be a C++ thing; I'm a C person, so that construct makes sense to me. Not sure how to get rid of it.

It is not necessary to shift both values


The subtraction in the code is a quick way to convert a digit represented in ASCII to a value. The numbers 0 through 9 have ASCII values 0x30, 0x31... 0x39. If the input value on the command line is "42" argv[x] points to two bytes: 0x34 0x32. To convert the first character (4) into an integer 4, you can subtract the value of the character zero from it (0x34 - 0x30) which yields 4. You would do the same for the values A-F and a-f to convert the ASCII representation of the hex digit to a value.

Yes, it is necessary to shift the value in val by 4 bits each time you add in a digit. Lets assume "123" was entered on the command line. The first time through the loop val is 0 and the shift has no effect. The character '1' is converted to integer and added to val; val becomes 1.

The second time through the loop val is shifted and becomes 0x10. The character '2' is converted to integer and then is added to val which now holds the value 0x12.

Again val is shifted and bcomes 0x120. The '3' is converted and added to val leaving the variable with 0x123.

Think of it as sliding the digits over one nibble to the left to make room for the next value.

Hope that makes some sense.
This User Gave Thanks to agama For This Post:
 

8 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Using binary representation of IEEE 754

Hi! What is the way to get the binary representation of a IEEE 754 (like 0001110110001111010101100111001011100100101010111101) without using perl. Bash for example, would be fine. I need to put that representation in a string for some operation and then to put that string back in a float. ... (3 Replies)
Discussion started by: Zephyr
3 Replies

2. Programming

Internal representation of double

I came across a puzzle which I can not explain. The setup is SCO OpenServer 5.7 (32 bit OS) and native SCO compiler. double is 8 bytes long on this system. I am able to populate the double variable with two different sets of values that produces the same double value, please see below: #include... (7 Replies)
Discussion started by: migurus
7 Replies

3. Shell Programming and Scripting

Splitting file based on line numbers

Hello friends, Is there any way to split file from n to n+6 into 1 file and (n+7) to (n+16) into other file etc. f.e I have source pipe delimated file with 20 lines and i need to split 1-6 in file1 and 7-16 in file2 and 17-20 in file 3 I need to split into fixed number of file like 4 files... (2 Replies)
Discussion started by: Rizzu155
2 Replies

4. Shell Programming and Scripting

Put double quotes around numbers

Hi, consider a file which has data such as "random text",912345,"54","finish" "random text",9991236745,"9954","finish" I want to replace the numbers that don't have double quotes around them with ones that do; so the output should be "random text","912345","54","finish" "random... (4 Replies)
Discussion started by: Storms
4 Replies

5. Shell Programming and Scripting

Splitting a file based on positive and negative numbers

Dear All, I have to split a tab delimited file in two files based on the presence of a positive or negative in column number 9 , for example file: A 1 5 erg + 6766 0.9889 0.9817 9.01882 erg inside upstream B 1 8 erg2 + 6766 0.9889 0.9817 -9.22 erg2 inside... (3 Replies)
Discussion started by: paolo.kunder
3 Replies

6. Shell Programming and Scripting

Convert binary file to csv and then back to the binary format

Hello *nix specialists, Im working for a non profit organisation in Germany to transport DSL over WLAN to people in areas without no DSL. We are using Linksys WRT 54 router with DD-WRT firmware There are at the moment over 180 router running but we have to change some settings next time. So my... (7 Replies)
Discussion started by: digidax
7 Replies

7. Programming

How bit representation of a number can be done in c?

I have an assignment in which a character is the input of which some bits(from a position to certain position) are to be inverted (1's complement) and then the resultant character is to be returned....for example unsigned char x = J from p = 3 to offset n = 5 01001010 inverted to... (1 Reply)
Discussion started by: ezee
1 Replies

8. UNIX for Beginners Questions & Answers

Splitting a file based on negative and positive numbers

I have a file that is pipe delimited and in Column F they have number values, both positive and negative. I need to take the one file I am starting with and split it into two separate files based on negative and positive numbers. What is the command to do so? And then I need to also transfer... (4 Replies)
Discussion started by: cckaiser15
4 Replies
readkey(3alleg4)						  Allegro manual						  readkey(3alleg4)

NAME
readkey - Returns the next character from the keyboard buffer. Allegro game programming library. SYNOPSIS
#include <allegro.h> int readkey(); DESCRIPTION
Returns the next character from the keyboard buffer, in ASCII format. If the buffer is empty, it waits until a key is pressed. You can see if there are queued keypresses with keypressed(). The low byte of the return value contains the ASCII code of the key, and the high byte the scancode. The scancode remains the same whatever the state of the shift, ctrl and alt keys, while the ASCII code is affected by shift and ctrl in the normal way (shift changes case, ctrl+letter gives the position of that letter in the alphabet, eg. ctrl+A = 1, ctrl+B = 2, etc). Pressing alt+key returns only the scan- code, with a zero ASCII code in the low byte. For example: int val; ... val = readkey(); if ((val & 0xff) == 'd') /* by ASCII code */ allegro_message("You pressed 'd' "); if ((val >> 8) == KEY_SPACE) /* by scancode */ allegro_message("You pressed Space "); if ((val & 0xff) == 3) /* ctrl+letter */ allegro_message("You pressed Control+C "); if (val == (KEY_X << 8)) /* alt+letter */ allegro_message("You pressed Alt+X "); This function cannot return character values greater than 255. If you need to read Unicode input, use ureadkey() instead. SEE ALSO
install_keyboard(3alleg4), ureadkey(3alleg4), keypressed(3alleg4), clear_keybuf(3alleg4), simulate_keypress(3alleg4) Allegro version 4.4.2 readkey(3alleg4)
All times are GMT -4. The time now is 06:46 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy