数据类型与二进制

C语言篇

  1. 有符号、无符号数据,都是数据的一种存储方式。 在编程中对他们负责的是编译器,编译器根据其数据类型将其编译为汇编(二进制)代码,有符号数据也将其表达方式为二进制补码形式
    如:signed short a = -1, unsigned short b=1,则编译后为:
    a:0xFFFF b: 0x0001.(按目前架构和编译设计是补码形式存储数据)
    则:如果我们在编码时写出:a+b =? 则编译为汇编(二进制)后进行运算。则为0xffff + 0x0001 -> 溢出,可得:0x0000.这个结果和预期也相同,但是不正确的使用。
    如果a=-8(0xfff8) b:2 (0x0002) ,则 a+b=0xfff8+0x0002=0xfffa
    这是编译器为默认类型为unsiged short :则a+b=0xfffa = 65530

因此数据类型不可用用错。
2. 由1可知,编程时用二进制就是二进制,不需要关心其类型。
当将二进制赋值给有符号数据时:signed short a= (signed short)0x8001, 则编译后: a存储的数据应该为:0x8001.
则a的实际数据值应该为:-(0x7fff)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值