Senin, 24 Maret 2014

Tipe Data Signed dan Unsigned

Kuiz Besar 1 no.3

Bahasa C menyediakan berbagai basic type. Banyak basic type tersebut yang dibentuk dari 4 macam aritmetic type specifiers seperti char, int, float, double, dan optional specifiers seperti signed, unsigned, short, long.
Misal, signed char, unsigned char, signed int, unsigned int, long int, unsigned short int dan sebagainya. pembahasan ini hanya dikhususkan untuk signed dan unsigned data type.
(http://en.wikipedia.org/wiki/C_data_types)


Signed dan Unsigned integer
Dalam C, pengunaan tipe data 'int' tanpa diawali dengan signed ataupun unsigned akan secara otomatis membaca tipe data tersebut sebagai signed int.
Sebuah proses yang disebut two's complement digunakan untuk mengubah angka positif menjadi angka negatif. Namun untuk memberitahu komputer bahwa sebuah angka adalah positif atau negatif, dibutuhkan  bit yang paling signifikan. Yaitu bit pertama, yang menunjukan nilai positif atau negatif.
Int atau signed int dapat bernilai negatif, karena bit pertama digunakan untuk menentukan nilai positif dan negatif dalam sebuah integer.
Sedangkan unsigned int tidak dapat bernilai negatif, namun dapat menghasilkan nilai positif yang lebih besar karena bit pertama tidak digunakan untuk menentukan nilai positif atau negatif seperti signed int.
(http://answers.yahoo.com/question/index?qid=20090516032239AAzcX1O)

Jadi bisa ditarik kesimpulan bahwa signed int dapat menyimpan angka negatif, nol, dan angka positif. Sedangkan unsigned int hanya dapat menyimpan angka nol, dan angka positif yang lebih besar.
(http://cplus.about.com/od/glossar1/g/unsigneddefn.htm)

Signed dan unsigned char
Char juga termasuk dalam  tipe integer. Jadi tidak salah bila char pun memiliki fungsi signed dan unsigned. Benar bahwa char digunakan untuk menyimpan karakter, namun karakter dalam C direpresentasikan dalam kode integer.
(http://stackoverflow.com/questions/4337217/difference-between-signed-unsigned-char)

Dalam C, ada tiga macam bentuk char:
-(plain) char
-signed char
-unsigned char
Bila kita menggunakan karakter bertipe teks, maka gunakan char yang biasa (plain char)
Bentuk ini juga bekerja sebagai nilai angka, namun tidak dispesifikan apakah nilai itu merupakan signed atau unsigned.
Maka dari itu, bila kita menggunakan karakter bertipe angka, gunakan:
signed char, yang memberikan setidaknya -128 sampai 127 range.
unsigned char, yang memberikan setidaknya 0 sampai 255 range.
(http://stackoverflow.com/questions/75191/what-is-an-unsigned-char)

2 komentar: