char转换成int时%d%u%x的解释

0XC3化成十进制就是12*161+3*160=195
在这里插入图片描述
在这里插入图片描述
在存储单元中的存储方式是用整数的补码形式存放。

原码:+|x| 或者 -|x| (就是符号位0/1 加上真值的绝对值)
例如:
+1 的原码:0000 0001
-1 的原码:1000 0001
8位二进制表示的范围是:[1111 1111, 0111 1111] 即 [-127, +127].

反码:正数的反码=原码,负数的反码=符号位不变+其余每一位按位取反。
例如:
+1 的原码:0000 0001 +1 的反码:0000 0001
-1 的原码:1000 0001 -1 的反码:1111 1110
8位二进制表示的范围是 [1111 1111, 0111 1111] 即 [-127, +127].

补码:正数的补码=原码,负数的补码=反码+1
例如:
+1 的原码:0000 0001 +1 的反码:0000 0001 +1 的补码:0000 0001
-1 的原码:1000 0001 -1 的反码:1111 1110 -1 的补码:1111 1111
8位二进制表示的范围是 [0111 1111, 1000 000] 即 [-128, +127].

移码:不管正负,只要将其补码的符号位取反即可。
例如:
+1 的原码:0000 0001 +1 的反码:0000 0001 +1 的补码:0000 0001 +1 的移码:1000 0001
-1 的原码:1000 0001 -1 的反码:1111 1110 -1 的补码:1111 1111 -1 的移码:0111 1111

-128的原码:1 1000 0000 ,9位,最高位符号位,再算它的反码:1 0111 1111,进而,补码为: 1 1000 0000,这是-128的补码,发现和原码一样, 1 1000 0000和1000 0000 相同?如果说一样的人真是瞎了眼了,所以,-128的原码和-0(1000 000)的原码是不同的,但是在char 型中,是可以用1000 000 表示-128的,关键在于char 是8位,它把-128的最高位符号位1 丢弃了,截断后-128的原码为1000 000 和-0的原码相同,也就是说1000 0000 和-128丢弃最高位后余下的8位相同,所以才可以用-0 表示-128,这样,当初剩余的-0(1000 0000),被拿来表示截断后的-128,因为即使截断后的-128和char 型范围的其他数(-127~127)运算也不会影响结果, 所以才敢这么表示-128。

char范围是-128到127,a的128二进制为1000 0000,是-128的补码。-129 补码 1111 1111 0111 1111 ,截取8位后为0111 1111,所以在程序中打印出来应为127。对于%u(unsigned int)%x(16进制)是一样的。在128的二进制1000 0000前面把32位没有补齐的全补1.至于为什么补1 要看它二进制,因为char是一个字节,就看8个byte,128的是1000 0000,最高位是1,可以看成负数,就补1 ,最高位是0,就全补0。(你可以把补1的数还原成原码,还是128的原码)

已知一个数的补码,求原码的操作分两种情况:
(1)如果补码的符号位为“0”,表示是一个正数,所以补码就是该数的原码。
(2)如果补码的符号位为“1”,表示是一个负数,求原码的操作可以是:符号位为1,其余各位取反,然后再整个数加1。
例如,已知一个补码为11111001,则原码是10000111(-7):因为符号位为“1”,表示是一个负数,所以该位不变,仍为 “1”;其余7位1111001取反后为0000110;再加1,所以是10000111。

Unsigned char 范围是0到255,c的256的二进制是1 0000 0000,因为unsigned char只是把最前面的没有当成符号位,还是char型,还是一个字节,所以取后8位,所以显示0,同理,512.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值