原码,反码,补码及取反操作

本文详细介绍了二进制表示中的原码、反码和补码概念,以及它们在存储正负数时的规则。对于正数,原码、反码和补码相同;负数则通过原码取反加1得到补码。此外,文章还探讨了二进制取反运算在正数和负数中的应用,强调了取反运算不区分符号位,但结果仍为补码,需要进一步转换为原码输出。

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

1. 概念

        原码:数值的二进制表示形式;
        计算中数字存储有正数和负数之分:统一用补码存储;
                正数:最高位为0;如:00000101:+5
                负数:最高位为1:如:10001010:-10

        一个字节存储数值范围:(-128 - 127)
        一个字节有八位,能存储的最大正数为01111111,其中首位0是符号位,表示数值为正;转换十进制数:127
        一个字节能存储的最小负数的补码为10000000,10000000——>(求反码)——>11111111——>(求补码)——>1 00000000——>(化为十进制)——>-128(补码取反加1 = 原码)

        反码:二进制码0变1,1变0叫做反码,反码用于原码补码之间的转换(符号位不变)
        补码:用来做数据的存储运算

2. 运算规则

        (原码 反码 补码之间的转换 , 符号位不要动)
        正数: 原码 = 反码 = 补码
        负数: 原码 = 补码取反加1(给补码求原码)
        负数: 补码 = 原码取反加1(给原码求补码)
    如:
        [+1] = [00000001]原 = [00000001]反 = [00000001]补
        [-1] = [10000001]原 = [11111110]反 = [11111111]补
        [11111111]补 = [10000000]反 = [10000001]原码 = -1

3. 应用:取反运算符,按二进制位进行"取反"运算

    如:负数 -6
        -6的二进制原码:1000 0110
        反码:        1111 1001
        补码:        1111 1010
        ~取反:      0000 0101
        所以结果是~(-6) = 5
    如:正数 10
        二进制原码即补码 0000 1010 直接存储
        ~取反:1111 0101
        由于他的符号位是1,系统认为这是一个负数的补码
        负数输出时,先将补码减一得反码:1111 0100;再取反原码:1000 1011
    总结:
        1.取反不区分符号位,全部位取反
        2.取反含义是将计算机中存储的数值进行取反,取反后的结果还是补码,需要取原码输出。
        3.正数,二进制原码即补码,直接取反
        4.负数,计算机存储器补码,先求补码,将补码取反

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值