淘先锋技术网

首页 1 2 3 4 5 6 7

在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。