计算机基础原理之——原码、反码、补码、~

1、概念:

  • 计算机不管是存储还是计算,其底层都是在执行二进制的补码并非是原码。
  • 原码:将十进制的数值的相应类型直接转换为其对应位数的二进制类型(注意:最高位是符号位。0表示它是一个正数,1表示它是一个负数)。
  • 反码:正数的反码与原码相同;负数是除了最高位符号位不变以外,其余位全部取反,“0”->“1”,“1”->“0”。
  • 补码:正数的补码与原码相同;负数的补码是在其反码的基础上加“1”。

2、例子

本文以int类型(占4个字节即32位)的十进制数为例:
十进制数(正数):
1

源码:00000000 00000000 00000000 00000001
反码:00000000 00000000 00000000 00000001
补码:00000000 00000000 00000000 00000001

十进制数(负数):
-1

源码:10000000 00000000 00000000 00000001
反码:111111111 111111111 111111111 111111110
补码:111111111 111111111 111111111 111111111

正数取反(是对其数字本身的补码取反后当做~2的补码):~2

2

原码:00000000 00000000 00000000 00000010
反码:00000000 00000000 00000000 00000010
补码:00000000 00000000 00000000 00000010

~2

补码:111111111 111111111 111111111 111111101
反码:111111111 111111111 111111111 111111100
原码:10000000 00000000 00000000 00000011
得到“~2“”的结果为:-3

注意:将2的补码进行取反后得到“~2”的补码,然后将这个补码减去“1”得到“~2”的反码,最后将这个反码取反得到“~2”的原码。

负数取反:~(-2)

-2

原码:10000000 00000000 00000000 00000010
反码:111111111 111111111 111111111 111111101
补码:111111111 111111111 111111111 111111110

~(-2)

补码:00000000 00000000 00000000 00000001
反码:00000000 00000000 00000000 00000001
原码:00000000 00000000 00000000 00000001
得到“”~(-2)“”的结果为:1

注意:将“-2”的补码取反后得到“~(-2)”的补码(是正数),由于是正数,所以其原码、反码、补码是一样的。

2、完成

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

雲小妖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值