What is the use of u_char and u_short... etc ?
Is it possible to use char instead of u_char?
2 Replies - 15781 Views - Last Post: 26 February 2009 - 08:28 AM
#1
What is u_char, u_short usef for? Why not use simply char and short..?
Posted 26 February 2009 - 12:37 AM
Replies To: What is u_char, u_short usef for? Why not use simply char and short..?
#2
Re: What is u_char, u_short usef for? Why not use simply char and short..?
Posted 26 February 2009 - 05:50 AM
the u in u_char stands for unsigned.
The char data-type isn't always used to store characters. Since char is the only data type whose size is always 1 byte on any platform, it is used often to store 1 byte data.
1 byte can hold 255 values but the regular char datatype is a signed type and hence stores values from -127 to 127 i.e. After 127, the number is represented in 2's complement notation and hence the numbers are represented as negative.
To use only the values 0 to 255, the unsigned type is used. In this case, everything is considered as a positive number and 2's complement is not taken.
The char data-type isn't always used to store characters. Since char is the only data type whose size is always 1 byte on any platform, it is used often to store 1 byte data.
1 byte can hold 255 values but the regular char datatype is a signed type and hence stores values from -127 to 127 i.e. After 127, the number is represented in 2's complement notation and hence the numbers are represented as negative.
To use only the values 0 to 255, the unsigned type is used. In this case, everything is considered as a positive number and 2's complement is not taken.
#3
Re: What is u_char, u_short usef for? Why not use simply char and short..?
Posted 26 February 2009 - 08:28 AM
In case some don't know what twos compliment addition is:
A negative plus its absolute value is zero (in other words, -x + x =0). So given 1 in binary, how do you find its negative?
00000001
+ X
------------
00000000
If you invert all of the bits and add 1, you can get its negetive
00000001 (one)
11111111 (negative one)
----------------------------
00000000 (zero)
You simply add and carry the one across. The extra 1 at the end is not used because there are no more bits to carry over (the computer protects you from that- even if there are two variables next to eachother in memory).
So to find twos compliment negative of 7:
00000111 (seven)
11111001 (negative seven)
-----------------------------------
00000000 (zero)
It ends up that the leftmost bit hints the sign to you. This is how variables work for signed types. However, unsigned types give don't have negatives, so -7 (signed) above is 128+64+32+16+8+1=220 in unsigned notation.
That's as best as i can do for now. Hope this helps
A negative plus its absolute value is zero (in other words, -x + x =0). So given 1 in binary, how do you find its negative?
00000001
+ X
------------
00000000
If you invert all of the bits and add 1, you can get its negetive
00000001 (one)
11111111 (negative one)
----------------------------
00000000 (zero)
You simply add and carry the one across. The extra 1 at the end is not used because there are no more bits to carry over (the computer protects you from that- even if there are two variables next to eachother in memory).
So to find twos compliment negative of 7:
00000111 (seven)
11111001 (negative seven)
-----------------------------------
00000000 (zero)
It ends up that the leftmost bit hints the sign to you. This is how variables work for signed types. However, unsigned types give don't have negatives, so -7 (signed) above is 128+64+32+16+8+1=220 in unsigned notation.
That's as best as i can do for now. Hope this helps
Page 1 of 1
|
|

New Topic/Question
Reply




MultiQuote



|