Daytwo---无符号与有符号

文章讲述了计算机内部如何使用补码表示有符号数,其中正数的补码为其本身,负数的补码是其绝对值取反加1。无符号数用原码表示且默认为正数。在C语言中,无符号变量需用`unsigned`关键字声明,并且在有符号与无符号数混合运算时,有符号数会被转换为无符号进行计算。
摘要由CSDN通过智能技术生成

1  数据类型的最高位用于标识数据的符号

最高位为1,表明这个数为负数。

最高位为0,表明这个数为正数。

2 在计算机内部用补码表示有符号数

正数的补码为正数本身

负数的补码为负数的绝对值给位取放后加1

ex:

8位整数5的补码为:0000 0101

8位整数-7的补码为:1111 1001

16位整数20的补码为:0000 0000 0001 0100

16位整数-13的补码为:1111 1111 1111 0011

3 在计算机内部用原码表示无符号

无符号数默认为正数

无符号数没有符号位

4 对固定长度的无符号数

MAX_VALUE + 1 ->MIN_VALUE (0)

MIN_VALUE - 1 ->MAX_VALUE (255)

5 C语言中默认为有符号类型

有符号的数与无符号的进行数学运算时,有符号的数将被看做无符号,这个有符号的数将被看做很大的正数。

(一个很大的正数+ 5的结果肯定大于0的。)

6  unsigned关键字声明变量为无符号类型

C语言中只有整型类型能能够声明unsigned变量

7 ex

ex1:

代码:

 

演示效果:

ex2:

代码:

演示效果:

8 总结

1.有符号用补码表示

正数的符号为0

负数的符号为1

2.无符号用原码表示

无符号没有符号位

无符号数只能用于表示正数

3.unsigned只能修饰整数类型的变量

当无符号与有符号数混合计算时,会将有符号数。

转换为无符号数再进行计算,结果为无符号数。

在代码写作时,一定要注意区分使用有符号与无符号的使用。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值