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: A Programmer's Perspective (3rd Edition)
Additional Engineering Textbook Solutions
Web Development and Design Foundations with HTML5 (8th Edition)
Digital Fundamentals (11th Edition)
Starting Out With Visual Basic (8th Edition)
Web Development and Design Foundations with HTML5 (9th Edition) (What's New in Computer Science)
Starting Out with Python (3rd Edition)
- Create a Python (py3) code that accepts input from a text file, add matrices, and prints output to a text file. Use matrix.py and main.py modules.Note: When Matrix A and Matrix B are ordered to be added but they have unequal dimensions, print "Matrix addition cannot be performed; dimensions are unequal."Please annotate significant parts. Format of the input from text file:First Line: type of operation (add)Second Line: matrix A dimension (example: if 3 rows and 2 columns, type 3 2)Third Line: matrix A elementsFourth Line: matrix B dimension Fifth Line: matrix B elements Sample input 1:add2 2 53 -47 312 267 2-34 6 Sample output 1:120 -2-27 37arrow_forwardPlease do not give solution in image format thanku Please help me implement this in JS. Quiz data and admin data is stored in a seperate .js file with one datastore called data and two arrays in it with quiz and user detailsarrow_forwardIn Python: Build a function that takes a record from your FASTA file as an argument, and returns a count of each amino acid coded for by the codons of the sequence. Keep in mind that because these records are not necessarily in the proper reading frame, so the user should be prompted to select a reading frame (0, +1, +2). You should put some thought into the presentation of your results by your main function, making sure they are clear and readable. The fasta file contains the below: >MD10G1276500 pacid=40089867 polypeptide=MD10G1276500 locus=MD10G1276500 ID=MD10G1276500.v1.1.491…arrow_forward
- How 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_forwardDifferentiate between VIEW and COPY? This question is based on arrays in Python.arrow_forwardGet the mean/average in a .txt file in pythonStrictly use the Code SampleFilename: numbers.txt456622101588153190Code Sample: fileName = input("Enter the file name: ")f = open(fileName, 'r')Continue the code to get the mean/average from a .txt file.arrow_forward
- You have to use Irvine32 library only And there is sample code about the problem need to complete and write it in other shape as you can INCLUDE Irvine32.inc .data str1 BYTE 81 DUP(0) ; buffer to store the string maxStr DWORD 81 ; maximum number of characters to read strLen DWORD 0 ; memory to store the length of string msg1 BYTE "Input: ",0 msg2 BYTE "The string has ",0 msg3 BYTE " characters",0 .code main PROC call readStr call printResult exit main ENDP readStr PROC ; show msg1 in the screen MOV EDX, OFFSET msg1 call writeString ; read from the keyboard into str1 MOV EDX, OFFSET str1 ; EDX = memory address of string buffer MOV ECX, maxStr ; save maximum chars to read from keyboard in ECX call readString ; call Irvine readString procedure to read string ; store string length in strLen variable MOV strLen, EAX readStr ENDP printResult PROC MOV EDX, OFFSET msg2 call writeString MOV EAX, strLen call writeDec MOV EDX, OFFSET msg3 call writeString call crlf call crlf printResult…arrow_forwardusing STL in c++, sort the given numbers in the input.txt file by only using heap data container. your sorted numbers should be written to the output.txt file (i)your code can be tested with an input file which comtains 1 million random numbers (ii) Execution time < 1 sec (iii) memory limit < 64MBarrow_forwardfix the code and remove compilation errorarrow_forward
- please note that the input should be taken from a txt file you can create one with the information provided in the sample run and the output should be written in another txt filearrow_forwardI need to tranform this file from C to C++arrow_forwardIn C++ only Implement a program that is able to read in a set of numbers from a file input.csv and compute the average of each "row" inside of the file. Your program should be dynamic, i.e. given any size input file, your program will still be able to compute the average number of each line Your output should display all floating point numbers with 2 decimal places of precision A sample file has been provided for you.arrow_forward
- Systems ArchitectureComputer ScienceISBN:9781305080195Author:Stephen D. BurdPublisher:Cengage Learning