原码、反码、补码、按位取反(~)

更新时间:2023-04-22 08:20:40 阅读: 评论:0


2023年4月22日发(作者:教育案例分析)

原码、反码、补码、按位取反(~)

数值在计算机中是以补码的⽅式存储的,在探求为何计算机要使⽤补码之前, 让我们先了解原码, 反码和补码的概念。

对于⼀个数, 计算机要使⽤⼀定的编码⽅式进⾏存储。 原码, 反码, 补码是计算机存储⼀个具体数字的编码⽅式。

⼀个数在计算机中的⼆进制表⽰形式, 叫做这个数的机器数。机器数是带符号的,在计算机⽤⼀个数的最⾼位存放符号, 正数为0, 负数为1。

⽐如,⼗进制中的数 +2 ,计算机字长为8位,转换成⼆进制就是[00000010]。如果是 -2 ,就是 [10000010] 。因为第⼀位是符号位,所以机

器数的形式值就不等于真正的数值。例如上⾯的有符号数 [10000010],其最⾼位1代表负,其真正数值是 -2 ⽽不是形式值130([10000010]

转换成⼗进制等于130)。所以将带符号位的机器数对应的真正数值称为机器数的真值。

原码 反码 补码

原码就是符号位加上真值的绝对值, 即⽤第⼀位表⽰符号, 其余位表⽰值。

反码的表⽰⽅法是:正数的反码是其本⾝;负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。

补码的表⽰⽅法是:正数的补码就是其本⾝;负数的补码是在原码的基础上, 符号位不变, 其余各位取反, 最后+1。 (即在反码的基础上+1)

举例:

⼗进制数原码反码补码

850101 01010101 01010101 0101

-851101 01011010 10101010 1011

90000 10010000 10010000 1001

-91000 10011111 01101111 0b2c电商网站 111

那么计算机为什么要使⽤补码呢?

⾸先,根据运算法则减去⼀个正数等于加上⼀个负数, 即: 1-1 = 1+(-1), 所以计算机被设计成只有加法⽽没有减法, ⽽让计算机辨别”符号

位”会让计算机的基础电路设计变得⼗分复杂,于是就让符号位也参与运著名散文 算,从⽽产⽣了反码。

⽤反码计算, 出现了”0”这个特殊的数值, 0带符号是没有任何意义的。 ⽽且会有[0000 0000]和[1000 0000]两个编码表⽰0。于是设

计了补码, 负数的补码就是反码+1,正数的补码就是正数本⾝,从⽽解决了0的符号以及两个编码的问题: ⽤[0000 0000]表⽰0,⽤[1000

0000]表⽰-128。

注意-128春天古诗 实际上是使⽤以前的-0的补码来表⽰的, 所以-128并没有原码和反码。使⽤补码, 不仅仅修复了0的符号以及存在两个编码的问

题, ⽽且还能够多表⽰⼀个最低数。 这就是为什么8位⼆进制, 使⽤补码表⽰的范围为[-128, 127]。

按位取反(~)

按位取反是对补码进天庭剩女 ⾏了取反(包括符号位)

正数取反:

~12

12

原码:0000 1100

反码:0000 1100

补码:0000 1100

补码按位取反:

~(0000 1100)=111猪和狗合不合 1 0011(按位取反后的补码为负数,反吸引反义词 向求反码、原码)

反码:1111 0010

原码:1000 1101 (⼗进制:-13)

~12=-13

负数取反

~-12

-12

原码:1000 1100

反码:1111 0011

补码:1111 0100

补码按位取反:

~竞选学生会演讲稿 (1111 0100)=0000 1011 (按位取反后的补码为正数,其反码、原码相同)

反码:0000 1011

原码:0000 1011 (⼗进制:11)

~- 12=11

按位取反技巧

⽆论正负数,先对数值本⾝加1,再改变符号位

12 符号位取反: 数值加112+1=13), 正变负, -13

-12 符号位取反: 数值加1-12+1=-11), 负变正, 11


本文发布于:2023-04-22 08:20:40,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/508981.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图