补码,原码,反码的意义
来源:互联网 发布:拍丑照的软件是什么 编辑:程序博客网 时间:2024/05/06 23:28
补码,原码,反码
计算机组成原理中,有补码,原码,反码的概念,但是一直搞不清楚为什么,只是记忆公式,不明白是怎么来的,现在写下来要如何理解各种码之间的关系,以及怎么来的。
补码
我们用C语言来举例。C语言中short是2个字节。则考虑如下语句:
short a = 5;
其中a在内存中的二进制表示为:
0000 0000 0000 0101
在计算机中,我们想要把加法和减法都统一成一种相同的运算规则,不用再对加法和减法进行区分,所以就要引入补码。
考虑 5+(-5)这种情况。当然,实际上就是5-5,但我们想要都统一成一种运算,所以就要看作是5+(-5)。当然,正确的结果应该是0才对,不管你怎么看待减法运算,结果肯定不能变。
-5的二进制表示为(最高位为符号位):
1000 0000 0000 0101
如果我们不做任何改变,直接把-5和5用二进制来相加,结果是:
1000 0000 0000 1010
也就是十进制里的-10,很显然,我们需要的是0,因此这种计算规则是错误的。
那么如何让结果是0呢?很简单:观察5的二进制表达:
0000 0000 0000 0101
我们对5进行按位取反,得到:
1111 1111 1111 1010
然后和5相加,很显然,结果是:
1111 1111 1111 1111
此时,距离0只有一步之遥,只需要在结果上加1就行了,因为short只有16位,所以进位就会益处,不用管了,因此a的8位全部是0,我们想要的0也就的出来了。
加1后得:
0000 0000 0000 0000
因为 直接什么都不变,用5+(-5)的二进制表示去相加,结果等于10,所以,我们就把-5用-5的补码来表示,这样相加就是0了,得到了正确的结果。因此,计算-5的补码,就是把5(注意是5不是-5)的二进制表示,按位取反(包括符号位),然后加1得到的结果。而正数的补码还是本身。
0 0
- 原码,反码,补码存在的意义
- 补码,原码,反码的意义
- 原码,反码,补码及移码存在的意义是什么?
- 原码、反码与补码及其意义
- 原码、反码与补码及其意义
- 原码、反码与补码及其意义
- 原码、反码、补码
- 原码-反码-补码
- 原码、反码、补码
- 原码、反码、补码
- 原码,反码,补码
- 原码、反码、补码
- 原码、反码、补码
- 原码、反码、补码
- 原码、反码、补码
- 原码、反码、补码
- 原码、反码、补码
- 原码补码反码
- 设计模式的原则
- android:maxLines="1"截取显示不全,用android:singleLine="true"解决
- Linux中执行shell脚本的4种方法总结
- glide:缓存基础
- 静态变量存储在哪个区
- 补码,原码,反码的意义
- MySQL
- 题目
- 想搞工业机器人 这五大方面你必须了解
- LeetCode:496. Next Greater Element I
- 面对对象程序设计1
- C++实现新浪新闻部分抓取存储mysql
- maven的package与install命令区别
- 无法安装或运行此应用程序。该应用程序要求首先在"全局程序集缓存(GAC)"中安装程序集