C语言原码,反码,补码在整形中的影响

       原码是将输入端输入的整数数据转化成的二进制数;反码是在源码的基础上保持符号位不变,其它各位取反;补码是在反码的基础上+1。同时,正整数原码、反码、补码均相同,负数则需要经过上述的变化。

        eg.输入数据-10

原码:1000 0000 0000 0000 0000 0000 0000 1010

反码:1111 1111 1111 1111 1111 1111 1111 0101

补码:1111 1111 1111 1111 1111 1111 1111 0110

          接下来说一下有符号char输入数据后,原码、反码、补码对最后输出的影响。

           eg.键入数据200

          电脑中先存为int整数型,计算机所存补码具体为:0000 0000 0000 0000 0000 0000 1100 1000。其中最高位的0表示符号为正。

        随后截取后八位存为char类型,即补码为:1100 1000     

反码:1100 0111

原码:1011 1000     

          计算机内存中存的是补码,在有符号类型中,最高位被计算机用作储存符号,0代表正,1代表负。因此在上面的例子中,计算机最后输出的为原码,最后原码解释为了32+16+8=56,最高位被解释为-1,结果为-56,最开始输入的200被错误解释为了-56。

          如果是无符号char类型,截取后原码反码补码均相同,结果就会是正常的200。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值