~ 按位取反

这篇博客探讨了二进制表示中的原码、反码和补码概念。在计算机中,正数的原码、反码和补码相同,而负数的原码通过取反得到反码,反码加1得到补码。文章以C语言代码为例,展示了如何计算和理解这些概念,特别是在内存中负数以补码形式存储的特性。最终,程序输出-1,证实了这一过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

涉及原码,反码,补码概念

int main(){
    int a = 0;
    int b = ~a;//b是有符号的整型
    //按二进制取反
    //00000000000000000000000000000000000
    //1111111111111111111111111111111111111111
    //原码,反码,补码
    //二进制的最高位是符号位
    //负数在内存中存储的时候,存储的是二进制的补码
    //补码减1得到反码
    //1111111111111111111111111111111111111111(补码)
    //1111111111111111111111111111111111111110(反码)
    //00000000000000000000000000000000000(原码)
    printf("%d\n", b);//使用的,打印出来的是这个数的原码
    //结果是-1
    return 0;
}

总结

1.二进制在计算机中以补码存储。

2.正数的原码=反码=补码;负数的原码=补码按位取反,补码=反码+1。

3.实际步骤就是列出原数的补码,求取反之后的补码,之后换得换成原码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值