首页 > 代码库 > unsigned/signed使用(c/c++)
unsigned/signed使用(c/c++)
unsigned/signed,同类型宽度都是一样,short占2字节共16个位,
无符号可以完全利用这16个位来表示数字,就有2^16=65536中可能,
可以表示0~65535,而有符号类型要用到最高位表示符号,
2^15 = 32768,所以能表示-32768~32767,为
了不出现两个0的情况,+0和-0,底层实现一般是用2的补码来表示负
数,一个负数的二进制表示,可以由这个负数的绝对值的二进制表现形
式取反再加1得到,
比如16位short值-1,绝对值是1,二进制表示为:
0000 0000 0000 0001
取反
1111 1111 1111 1110 + 1 =
1111 1111 1111 1111
而正好这个数也是无符号型最大值65535的表现形式,所以对于这个二
进制,是解释为65535还是-1,那就是printf里格式化的功能了。
采纳于:https://zhidao.baidu.com/question/518899275533973525.html
unsigned/signed使用(c/c++)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。