关于有符号和无符号整数

简介

有符号数就是取第一位二进制为符号位置0是代表整数,1是代表负数;
无符号整数则是全部二进制都代表相应的数据位;无符号数是从0开始的,没有负数;
如拿8位二进制来说:
1111 1111 无符号数的表示范围为0~255
而有符号数的表示范围是-128~127;

易错混淆:

1. 运算规则

在计算机内部整数都是以补码的形式储存的,有符号数和无符号数在计算机里表示都是一样的,二进制的补码形式。同时不管是无符号整数还是有符号整数的运算规则都是一样,得到的结果都是一样的,之所以运行输出的结果不一样,是因为编译器翻译的规则不一样,这也是由于因为二者的定义不一样。

2. 减法时注意

当做x-y的运算时,我们知道计算机内执行的是[x]补+[-y]补的运算,注意这里有一个混淆点,求[-y]补时,是将y的二进制全部取反后加一,而求负数的补码时是符号位不变将剩余位取法加一,笔者当时就是这里没注意然后就有点搞不清了,嘿嘿。

3. 换算时

二者转换也就很简单了,值是一样的,就根据二者的规则将结果算出来就行了,比如1100 1111当它为有符号整数时是换算成十进制是表示为-49,当为无符号整数时是表示207;

在这里插入图片描述
如上图代码,有符号整数下5-10=-5,-5在计算机内是以1111 1111 1111 1111 1111 1111 1111 1011的形式储存,对应无符号数就是4294967291。

4. 溢出问题

关于溢出,无符号数则是看进位标志位;
无符号数溢出判断:

       其实很简单,就一句话:
       当最高为向更高位有进位(或借位)时产生溢出

有符号数则是溢出标志位;

	 	Xf、Yf分别两个数的符号位,Zf为运算结果符号位。
	 	当Xf =Yf =0(两数同为正),而Zf=1(结果为负)时,负溢出;
		当出现Xf =Yf =1(两数同为负),而Zf=0(结果为正),正溢出.

5. 关于计算机是怎么区分二者

计算机也是根据一些标志位区分二者;就像前面的进位标志位类似;

最后啦啦啦
看到这里希望对你有所帮助

参考链接:
http://www.echojb.com/computer/2016/10/06/227097.html
https://blog.csdn.net/garybushiqiqi/article/details/80456447

  • 2
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值