在c語言中怎么表示負數?
有符號數的表示方法是由硬件決定,而不是由C決定的。有三種表示方法:
1、二進制原碼
0000 0001 表示 1
1000 0001 表示 -1
這個方法有個缺點是有兩個零: +0 和 -0。這會引起混淆,而且用兩個位組合來表示一個值也有些浪費。
2、二進制補碼(最普遍的系統)
區別在于 singned 和 unsigned:
1)如果是無符號字節, 1000 0000 該組合為 128
2)如果是有符號字節, 1000 0000 該組合為 -128
第一種表示數的范圍是 0 ~ 255;
第二種表示數的范圍是 -128 ~ +127,對于一個二進制補碼數取負數,最簡單的方法就是取反、加 1。
3、二進制反碼
通過反轉位組合中的每一位以形成一個數的負數,例如:
0000 0001 表示 1
1111 1110 表示 -1
這種方式也有一個 -0:1111 1111。其范圍是 -127 ~ +127。