二进制的几种编码表示方法。

计算机存储数据信息都是以二进制编码存储的,机器内存储的数据的表达形式称为“机器数”,而它代表的数制称为这个机器数的“真值”。数有正负之分,那么在计算机里怎么表示正负呢,0和1不就刚好吗?呵呵,没错,就是用“0”表示正号,“1”表示负号,符号位放在数的最高位。例如,二进制数X=(+1010100),Y=(-1010100),则他们在机器中就存为

X:

0 1 0 1 0 1 0 0

Y:

1 1 0 1 0 1 0 0

最左边那一位是符号位,跟它后面的数字一起组成一个数。

为了让计算机计算起来更简单,硬件设计起来也比较简单,人们研究了多种二进制编码方法。其实就是对负数的不同编码,正数基本不变。

1.原码

刚才鸡啄米讲到的最高位是符号位,后面是绝对值来表示一个数,这种编码叫做“原码”。但是有个问题,就是0的表示不唯一,+0就是000...0,-0就是1000...0。另外,进行四则运算时,对于符号位都要单独处理,同号怎样运算,异号又怎样运算,有时还需要借位,这对计算机来说是很麻烦的,所以必须找更好的编码方法。

2.反码

其实反码不怎么用,但是怎么说是一种编码方式,而且是求补码的中间码,我们还是需要学一下的。

正数的反码跟原码一样,负数的反码的符号位跟原码一样,但其余各位取反,也就是0变1,1变0。例如,二进制数+1100111的原码是01100111,反码也是01100111,-1100111的原码是11100111,反码则是10011000。

3.补码

大家想下,如果现在是7点,但是鸡啄米的表时间是9点,那怎样才能把它调准呢?鸡啄米可以往后调2个小时,也可以往前调10个小时,结果都是9点。这里就涉及到取模运算(以前我们叫求余运算),9-2 = 7,(9+10)%12 = 7,这里的%就是C++里的取模运算符。2与10对模数12是互为补数的。补码就是利用的这个原理,利用补码可以把减法运算变成两个补码相加,具体就是将其变为一个正数和一个负数的加法运算,然后计算这个正数和负数的补码,两个补码相加。因为补码的符号位作为数值参与运算,所以就不存在符号位单独处理的问题。

正数的原码、反码和补码是一模一样的。

负数的补码是其反码的最末位加1得到的,我们经常顺口记为负数的补码就是取反加1。

必须要指出的是补码运算的结果也是补码,还要把它算到原码才得到最后结果。那么知道补码怎么计算原码,很简单,就是对补码再求补码就是源码了。

鸡啄米给大家个例子:

10-67 = ?,10的原码是00001010,补码跟原码一样,-67的原码是11000011,补码是10111101。两个补码相加是11000111,这是结果的补码,求原码要对这个补码再求补码,取反加1后就是10111001。

二进制的几种编码表示方法相关推荐

  1. java代码二进制转为十六进制_Java 中二进制转换成十六进制的两种实现方法

    Java 中二进制转换成十六进制的两种实现方法 每个字节转成16进制,方法1 /** * 每个字节转成16进制,方法1 * * @param result */ private static Stri ...

  2. 把十进制转化为二进制的一种方法

    把十进制转化为二进制的一种方法: void pb(int n){if(n != 0){pb(n/2);putchar('0'+n%2);} }int main(void){for(int i=10; ...

  3. 十进制转二进制,用java的两种基本方法,适合新手

    十进制转二进制,用java的两种基本方法,适合新手 1.String字符串拼接法 package cn.sxt;import java.util.Scanner;/*** 6. 从键盘输入某个十进制整 ...

  4. 十进制转化为二进制的几种方法

    /十进制转二进制的三种方法/ package 数据结构; import java.util.Scanner;; public class 十转二进制 { public static void main ...

  5. 二进制(二):十进制转二进制的两种方法

    前一篇已经简单介绍了二进制,现在来介绍如何把我们常用的十进制数字转换成二进制.十进制转二进制有两种方法: 一.连除法(把十进制数字除以2,得到商和余数,再把商除2,直到除到0为止,然后按倒序把余数排列 ...

  6. 描述最常用的5种http方法的用途_05-HTTP协议-万字好文!建议收藏

    HTTP协议介绍 设计HTTP(HyperText Transfer Protocol)是为了提供一种发布和接收HTML(HyperText Markup Language)页面的方法. Http组成 ...

  7. 弱加密算法有哪几种_常见的几种加密方法

    常见的几种加密方法和实 常见的几种加密方法 : MD5 SHA1 RSA AES DES 1.MD5加密 是HASH算法一种. 是生成32位的数字字母混合码. MD5主要特点是 不可逆 MD5算法还具 ...

  8. stl如果开o2_打开STL文件的四种最佳方法

    下载通用文件查看器(File Magic) 安装可选产品 - File Magic (Solvusoft) | EULA | Privacy Policy | Terms | Uninstall 选择 ...

  9. 房地产特征价格评估的次市场效应模型: 一种概率方法撰写

    文章目录 一.数据预处理部分 (一)使用到的库 (二)使用到的函数 (三)实现流程 二.POI数据处理部分 (一)使用到的库 (二)使用到的函数 (三)实现流程 三.BN (一)使用到的库 (二)使用 ...

最新文章

  1. 三维重建新应用:精确还原凶杀现场细节!
  2. 关于HTML页以Get方法向asp.net页面传值乱码的解决
  3. win32 临界区和简单实例Demo(win32版)
  4. IP地址分类及CIDR划分方法
  5. 【干货】数字化转型工作手册.pdf(附下载链接)
  6. javaScript 对象访问属性的另一种方式
  7. 如何编辑PDF文档中的文本呢?
  8. Win7/Win8/IIS7/IIS8配置ASP/ACCESS
  9. EJS脚本中MD5应用
  10. c语言在头文件后int a,C语言头文件 实现文件 工程文件组织
  11. 机器学习之---马尔可夫随机场的应用
  12. WinHex脚本命令教程--中文版
  13. 【C语言】abs()用法及其他绝对值函数
  14. 随手记 第1篇 | 笔记本win10 Edge 如何滚动截屏
  15. 信息安全网络安全到底有哪些资质?被大家追逐。。。
  16. 滚动视差让你不相信“眼见为实”
  17. mysql 连续七天不登录_【SQL】查询连续登陆7天以上的用户
  18. C语言编程习题专项突破
  19. Tomcat到底是个啥?
  20. [Compose] 使用 Compose 在 Android 中的脚手架 Scaffold

热门文章

  1. 学计算机的需要配哪种笔记本,微软哪一款笔记本电脑办公用性价比高?
  2. 如何看待“程序员鼓励师”这一职业?
  3. 10% building 2/2 modules 0 active ERROR SyntaxError: Unexpected stringimport core-js/modules/es6.r
  4. 【JMeter】各种逻辑控制器(Logic Controller)
  5. 「DigitalOcean Droplet」 Server Overview
  6. 2021-05-25-文档-3
  7. Java 核心技术卷一 随笔
  8. 谷安天下CISA培训——2012情人节特惠
  9. 开源悟空CRM安装问题解决
  10. HEIC格式转换为jpg(C#)