Compile and run the sample code that uses show_bytes (file show-bytes. c) on different machines to which you have access. Determine the byte orderings used by these machines.
Byte ordering:
- Some machines decide to store the objects in memory ordered from least significant byte to most, while other machines store them from most to least.
- The byte ordering are made by the two ways:
- Little Endian
- In little Endian, the least significant byte comes first.
- Big Endian
- In big Endian, the most significant byte comes first.
- Little Endian
Example:
The example for find the little-endian and big-endian for hexadecimal value is shown below:
Here assume that the hexadecimal value is “0x13244860”. Then address range for given ordering byte is “0x200” through “0x203”.
Big Endian for given hexadecimal value is
0x200 | 0x201 | 0x202 | 0x203 |
13 | 24 | 48 | 60 |
Little Endian for given hexadecimal value is
0x200 | 0x201 | 0x202 | 0x203 |
60 | 48 | 24 | 13 |
Explanation of Solution
Corresponding code from given question:
#include <stdio.h>
//Define variable "byte_pointer" in char datatype.
typedef unsigned char* byte_pointer;
//Function definition for show_bytes.
void show_bytes(byte_pointer start, size_t len)
{
//Declare variable "i" in int data type.
int i;
/* "For" loop to determine byte representation in hexadecimal */
for (i = 0; i < len; i++)
//Display each bytes in "2" digits hexadecimal value.
printf(" %.2x", start[i]);
printf("\n");
}
//Function to determine byte for "int" number.
void show_int(int x)
{
//Call show_bytes function with integer value.
show_bytes((byte_pointer) &x, sizeof(int));
}
//Function to determine byte for "float" number.
void show_float(float x)
{
//Call show_bytes function float value.
show_bytes((byte_pointer) &x, sizeof(float));
}
//Function to determine byte for "pointer" number.
void show_pointer(void *x)
{
//Call show_bytes function with pointer value.
show_bytes((byte_pointer) &x, sizeof(void *));
}
//Test all show bytes.
void test_show_bytes(int val)
{
//Define variables.
int ival = val;
float fval = (float) ival;
int *pval = &ival;
//Call function.
show_int(ival);
show_float(fval);
show_pointer(pval);
}
//Main function.
int main(int argc, char* argv[])
{
//Define the sample number.
int sampleNumber = 682402;
//Call test_show_bytes function.
test_show_bytes(sampleNumber);
return 0;
}
The given program is used to display the byte representation of different program objects by using the casting.
- Define “byte_pointer” using “typedef”.
- It is used to define data type as a pointer to an object of type “unsigned char”.
- The function “show_bytes” is used to display the address of a byte sequence by using the argument that is byte pointer and a byte count.
- Each byte is displayed by “2” digit.
- The function “show_int” is to display the byte representations of object of “int” data type.
- The function “show_float” is to display the byte representations of object of “float” data type.
- The function “show_pointer” is to display the byte representations of object of “void *” data type.
- Test all the data type values by using function “test_show_bytes”.
- Finally, assign the sample number in main function and call the “test_show_bytes” with argument “sampleNumber”.
Byte ordering used by the given machines:
After compiling and running the above code, the following output will be appear
a2 69 0a 00
20 9a 26 49
3c cc e9 18 ff 7f 00 00
From the above output,
- The byte representation for “int” data type is “a2 69 0a 00”.
- The byte representation for “float” data type is “20 9a 26 49”.
- The byte representation for “int *”data type is “3c cc e9 18 ff 7f 00 00”.
The byte ordering used by these machines is “big-endian”.
- Reason:
- Consider, the byte representation of “int” value is “a2 69 0a 00”.
- From this, the value is ordered from most significant byte to least significant byte. Hence, it is referred as big-endian.
Want to see more full solutions like this?
Chapter 2 Solutions
COMPUTER SYSTEMS&MOD MSGT/ET SA AC PKG
Additional Engineering Textbook Solutions
Introduction To Programming Using Visual Basic (11th Edition)
Degarmo's Materials And Processes In Manufacturing
Computer Science: An Overview (13th Edition) (What's New in Computer Science)
SURVEY OF OPERATING SYSTEMS
Starting Out with C++ from Control Structures to Objects (9th Edition)
Starting Out With Visual Basic (8th Edition)
- Please use python and python file i/o to solve the problem. Create an input file input1_1.txt as shown below, solve the problem and print the output to output1_1.txt file as shown in the question.arrow_forwardIN C PROGRAMMING LANGUAGE AND COMMENT EVERY LINE SO I COULD UNDERSTAND EVERY STEP PLEASE, Write a program that implements the binary search for a set of integers stored in a data file. (Note that the data set in sorted in an ascending order).arrow_forwardplease write that program with C languagearrow_forward
- Time Write a Python script that extracts and prints a single record from an input file in which organized by line. Each line contains the name of a person (possibly containing multiple followed by the year of his birth. Abbas ibn Firnas ibn Wirda: 809 Muhammad ibn Musa al - Khwarizmi: 780 Abu Al - Walid Muhammad Ibn Ahmad Rushd: 1126 The program uses function extract DataRecord with the specification: @param infile the input text file object @return pants a list containing the name (string) in the first element and the year of bir the second element. If the end of file was reached, an empty list is returnedarrow_forwardUsing good OOP, write a C++ program that will compare two arrays to test for the same elements and multiplicity. To begin, populate the arrays with the input files, comFile1.txt and comFile2.txt. The elements in the arrays do not need to be in the same order for them to be considered similar. For example:comFile1.txt TO array 1: 121 144 19 161 19 144 19 11comFile2.txt TO array 2: 11 121 144 19 161 19 144 19 NOTE: Professor mentioned that the array Size should be 300 as eh will be testing the code with different files other than these two he has provided for examples. would be considered to have the same elements because 19 appears 3 times in each array, 144 appears twice in each array, and all other elements appear once in each array.Use pointer notation instead of array notation whenever possible.Display whether or not the arrays have the same elements and multiplicity.Use private member functions and variables.Use public member…arrow_forwardHow to reading information from file to parallel arrays ,by using c programming,then do a calcaulation in parallel array, can you write a comment to understand what you do? Thank youarrow_forward
- What is the answer in C language?arrow_forwardRead the txt file in Python and display the output in a separate txt file as shown below; Input txt file:30 2535 4041 4526 2641 4543 4749 4446 4710 1535 2011 1729 16 output txt file: [[[30,25],[35,40],[41,45],[26,26]], [[41,45],[43,47],[49,44],[46,47]], [[10,15],[35,20],[11,17],[29,16]]]arrow_forwardThis exercise is to write a Decimal to Hex function using BYTE operations. You can use a List, Dictionary or Tuple for your Hex_Map as shown below, but it's not necessary to use one. It is necessary to use Byte operations to convert the decimal to hex. The bitwise operations are also available as __dunders__. Write a function to convert a integer to hexidecimal. Do not use the Python hex function (i.e. hexnumber = hex(number)) to convert the number, instead write your own unique version (i.e. MYHEX: hexnumber = MYHEX(number)). Your function should not use any Python functions like hex, dec, oct, bin or any other Python functions or modules. Functions, like Python ORD, can be used to convert a string to a integer. The input number range is 0 to 1024. def MYHEX(number): hex_map = {10: 'A', 11: 'B', 12: 'C', 13: 'D', 14: 'E', 15: 'F'} result = '' while number: digit = number % 16 if digit > 9: result = hex_map[digit] + result else:…arrow_forward
- python - Recap: X is an array from -3pi to 8pi in 1000 steps. Write the python syntax for looping over all values of X and updating the value current to -999. where X is an even multiple of pi. Hint, use a for loop and appropriate if statements.arrow_forwardplease code in python Find the expanded DNA strand: this is the opposite of the compression technique described in 3. So, it basically undoes the compressing. For example, CAGGTTT is the expanded form of CA2G3T, TATTGC is the expanded form of TA2TGC, and TAGC is the expanded form of TAGC.arrow_forwardPlease use python and python file i/o to solve the problem. Create an input file input3_1.txt as shown below, solve the problem and print the output to output3_1.txt file as shown in the question. Sample Input Explanation:In sample input 2,Query 0: Initially, there are 8 people in the village who do notknow each other.{1} {2} {3} {4} {5} {6} {7} {8}Query 1: After person 2 and person 4 becoming friends:{1} {2,4} {3} {5} {6} {7} {8} The output is 2, since the size of the friends circle {2,4} is2.Query 2: After person 4 and person 5 becoming friends:{1} {2,4,5} {3} {6} {7} {8}The output is 3, since the size of the friends circle {2,4,5} is3.Query 3: After person 3 and person 6 becoming friends:{1} {2,4,5} {3,6} {7} {8}The output is 2, since the size of the friends circle {3,6} is2.Query 4: After person 4 and person 7 becoming friends:{1} {2,4,5,7} {3,6} {8}The output is 4, since the size of the friends circle {2,4,5,7}is 4.Query 5: After person 3 and person 1 becoming friends:{2,4,5,7}…arrow_forward
- Systems ArchitectureComputer ScienceISBN:9781305080195Author:Stephen D. BurdPublisher:Cengage Learning