可能很多人有这样的疑问,我们为什么要了解原码、反码、补码,它能帮助我们解决什么问题?在编写代码中有什么实际用途呢?

我是这样认为的,其一,作为计算机基础知识,我们必须有所了解。其二、这些基础知识无论是普通的编写代码,还是研究高超的算法都离不开它。

例:我们常见的位运算  按位与(&)、按位或(|)、取反(~)等等。

在代码中, 我们可能经常会碰到这样的需求,要计算一个数是偶数或奇数,一般我们这样写  n % 2 取余,如果余0则为偶,否则为奇。

我们可以利用按位与(&)很巧妙的解决这问题,而且效率会更高,因为位运算是对内存数据进行操作,不需要转换成十进制,因此它的处理速度更快。

我们来判断整数n是奇是偶,可以运用表达示 n & 1,如 n = 5, n & 1返回值1;   如n=6,n&1返回值0;因为,在二进制里面,末位为0表示偶数,为1表示奇数,效果与n % 2 取余是一样的,但比它要快。

当然,除了这个,还有非常多的用途。

好啦,我们进入正题!

------------------------------------------------------------------------------------------------------------------------------------------------

我们知道,计算机中所有数据最终都是以二进制数表示。

相信大家也学过如何将一个十进制数转换为二进制数,如果觉得换算比较麻烦,可以用系统自带的计算器辅助换算。

我们也学过字节与位,1字节=8位,通常在Asp.net、Java等高级编程语言中int类型默认以32位(4字节)表示,当然你可以显示申明以16位或64位表示。现假设有int类型数,值为9,在计算机中以二进制方式表示如下:

--8位--

0000 1001

--16位--

0000 0000 0000 1001

--32位--

0000 0000 0000 0000 0000 0000 0000 1001

--64位--

0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 1001

通过以上可以看出,数值9转换成二进制是0000 1001,在16位、32位或64位中它们占位比较多,所以前面补0填充。

OK,这是数值9的二进制表述,那么如果是-9,它在计算中如何表述呢?

在计算机中,负数是以其正值的补码形式表述的。这就需要我们搞清楚什么是原码、反码、补码,他们之间有什么暧昧的关系啦。

原码:一个整数,按照绝对值换算成的二进制数,称为原码。(数的绝对值:正数和零的绝对值是它本身,负数的绝对值是它的相反数。总之,一个数的绝对值是非负数。)

   如:数值-9的绝对值为9,数值9的二进制是 0000 1001,这就是-9的原码。

反码:在原码基础上按位取反,产生的新二进制数称为原二进制数的反码。简单理解就是:原为1的变成0,原为0的变成1.

   如:数值-9的原码是 0000 1001。把它的每一位取反后为 1111 0110

补码:反码加1为补码。(补码=反码+1; 反码=原码取反; 原码=数值绝对值的二进数数)

如:数值-9的原码是 0000 1001。把它的每一位取反后为 1111 0110,计算补码=反码+1,也就是 1111 0110 + 1 = 1111 0111

因此,数值-9在计算机中二进制表述为:1111 0111

我们再来一例:-15在计算机中如何表述:

1、原码,数值-15的绝对值15,它的二进制表述是 0000 1111

2、反码,原码基础上取反为:  1111 0000

3、补码,反码+1得补码,  1111 0001

所以-15在计算机里用二进制表述就是 1111 0001

转载于:https://www.cnblogs.com/event/p/6406293.html

计算机基础知识:原码、反码、补码相关推荐

  1. 计算机中的原码,计算机中的原码反码补码移码

    计算机中的原码反码补码移码 原码 数值 X 的原码记为 [X]原,如果机器字长为 n (即采用 n 个二进制位表示数据),则最高位是符号位,0 表示正号,1 表示负号,基余的 n~1 位表示数值的绝对 ...

  2. 【计算机组成原理】原码 反码 补码 移码的转换

    原码 反码 补码 移码的转换 这三种机器码都是二进制数据的表现形式,可以表现正数和负数. 原码是可以直接表现出数据的正负和大小. 正数的原码.反码和补码都是相同的. 反码用于原码和补码的转换的功能. ...

  3. 【计算机组成原理】原码 反码 补码 移码

    目录 一.原码.反码.补码.移码的概念 1. 真值 2. 机器数 1. 原码 2. 反码 3. 补码 4. 移码 二.原码.反码.补码.移码的转换 1. 原码转反码 2. 原码转补码 3. 原码转移码 ...

  4. c语言原码 补码 反码,C语言 原码--反码--补码

    //原码,反码,补码 #include #include //数值的表示方法--原码.反码和补码 //原码:最高位为符号位,其余各位为数值本身的绝对值 //反码: //正数:反码与原码相同 //负数: ...

  5. 计算机基础:原码补码反码计算

    结论: 1.正数的原码=反码=补码 2.负数的反码=在其原码的基础上, 符号位不变,其余各个位取反 负数的补码=在反码的基础上+1 负数的补码=在原码的基础上, 符号位不变, 其余各位取反, 最后末位 ...

  6. 关于计算机中 原码, 反码, 补码 详解

    本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希 ...

  7. 【原码, 反码, 补码的基础概念和计算方法】

    数值在计算机中是以补码的方式存储的,在探求为何计算机要使用补码之前, 让我们先了解原码, 反码和补码的概念. 原码就是符号位加上数字的二进制表示, 即用第一位表示符号, 其余位表示值. 反码的表示方法 ...

  8. 计算机组成原理---之原码,补码,反码

    本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希 ...

  9. C语言基础(二)—— 常量与变量、数据类型、进位制、关键字、原码反码补码、限定符、字符串格式化输入输出

    1. 常量与变量 1.1 关键字 1.2 数据类型 数据类型的作用:编译器预算对象(变量)分配的内存空间大小. 1.3 常量 在程序运行过程中,其值不能被改变的量 常量一般出现在表达式或赋值语句中 整 ...

  10. java基础-原码反码补码

    本文帮助理解,Java中原码反码补码的原理 1:原码反码补码,基础概念和计算方法 对于一个数,计算机需要使用一定的编码方式进行存储.原码反码补码是计算机存储一个具体数字的编码方式. 原码: 第一位表示 ...

最新文章

  1. 从自动驾驶汽车开始,机器学习开始与物理世界交互
  2. CGAL window 10安装、Demo使用步骤以及问题解决记录
  3. java 发送 接受 xml请求
  4. Wireshark(2):应用Wireshark观察基本网络协议
  5. sql2008 服务器未响应,sql配置管理器,SQL server (MSSQLSERVER)开启不了,请求失败或服务器未响应....
  6. pytorch 卷积
  7. 【异常(待解决)】org.apache.http.NoHttpResponseException: api.weixin.qq.com:443 failed to respond
  8. 连通性问题--Algorithms IN C读书笔记
  9. html中treegrid不显示根节点,treegrid如何让子节点默认不展开
  10. mysql游标是什么特性_[转]MySQL游标特性
  11. final、finally、finalize 区别
  12. Android 四大组件学习之BroadcastReceiver四
  13. 2009年英国大学综合排名
  14. eth转入地址_ETH智能合约靶机 审计学习攻略
  15. 怎么读取cf卡id_simotion读写CF卡,保存/读取变量
  16. 来到广西的十年之吃喝
  17. 代码维护服务器,维护服务器的利器-pubwin 2009程序代码
  18. STM32F429--STM32的PWM占空比产生与测量
  19. Kubectl(完整)基本操作命令
  20. 校园网测试--ettercap使用

热门文章

  1. Windows下编程需要看哪些书
  2. 【机器视觉】 dev_set_shape算子
  3. 【STM32】SysTick定时器
  4. 【Linux系统编程】特殊进程之僵尸进程
  5. python开源爬虫项目违法吗_Python开源爬虫项目代码:抓取淘宝、京东、QQ、知网数据...
  6. 用c语言get统计字母个数,请问这个用c怎么做:输入一串字符,分别统计其中数字和字母的个数...
  7. centos设置mysql初始l密码_CentOS 7下安装MySQL后重置root密码方法
  8. oracle的OCI目录下没有samples包的解决方案
  9. Codeforces 1480A. Yet Another String Game (阅读理解题)
  10. TCP/IP学习笔记(三)TCP流量控制以及滑动窗口