理解原码,反码,补码转换

本人今后不定期在CSDN上更新博客,大部分内容将会更新在个人博客www.lijugang.com中!
先看一段简单的小程序:

#include<stdio.h>
    void main()

    {
        int a=~10;
        printf("%d\n\r",a);
    }

相信大家很熟悉这段小程序的功能吧,就是做一个按位求反的运算,执行结果是-11.下来就这个过程详细分析.

10在32位机上的表示为0000 1010,对它按位求反的结果是1111 0101,但是这就是-11的二进制表示吗?显然不是,为什么会这样呢,因为为了减轻CPU的执行负担,二进制数在存储的时候是按照补码的方式存储的。因此还需要求该数的补码,欲求补码,先求反码,即1000 1010,对这个数再加1就是最终-11的二进制表示,即1000 1011。

其中最高位是符号位,0表示正数,1表示负数。此处涉及了微机原理的知识。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值