博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数制与运算
阅读量:4093 次
发布时间:2019-05-25

本文共 2244 字,大约阅读时间需要 7 分钟。

引言:计算机的基本功能是对数据进行存储、处理(运算)、输出,这些数据主要有数值、字符、图形、图像、声音等。在计算机系统中,这些数据都要被转化成二进制(0或1)的形式存储,也就是需要进行二进制编码处理。

1、什么是编码?

编码是从一种形式或格式转换为另一种形式的过程也称为计算机编程语言的代码简称编码。用预先规定的方法将文字、数字或其它对象编成数码,或将信息、数据转换成规定的电脉冲信号。与之相对应的是解码,解码是一种用特定方法,把还原成它所代表的内容或将信号、光信号、等转换成它所代表的信息、数据等的过程。(百度百科)

其实编码通常来说就是用数字、字母等按规定的方法和位数来代表特定的信息,解码就是将人们熟悉的信息通过特定的规则和位数转化为计算机能识别的数据,两者主要是为了人和计算机之间进行信息交流和处理。

 

2、计算机为什么用二进制编码?

  • 物理上容易实现,可靠性强。电子元器件大都具有两种稳定的状态:电压的高和低,晶体管的导通和截止,电容的充电和放电等。这两种状态刚好可以利用二进制的两个数码0和1来表示。
  • 运算简单,通用性强。如二进制的乘法运算规则有三种:1x0=0x1=0;0x0=0;1x1=1。如果用十进制的运算规则则有55种。
  • 计算机中的二进制数的0、1数码与逻辑量“假”与“真”的0和1吻合,便于表示和进行逻辑运算。

计算机除了使用二进制数(Binary)外,为了书写和表示方便,还引入八进制数(Octal)和十六进制数(Hexadecimal),而人们在生活中通常使用十进制数(Deciaml),之所以使用十进制数是因为人有十个手指头,当然有人会问为什么不把脚指头算上,当然肯定是有人算上了的,比如神秘的玛雅人就是采用二十进制。

 

3、不同计数制之间的相互转换

  • 二进制数(Binary)、八进制数(Octal)、十六进制数(Hexadecimal)转化为人们熟知的十进制数(Deciaml)

(110101.01)B = 1x2^5 + 1x2^4 + 1x2^2 + 1x2^0 + 1x2^-2 = (53.25)D

(456.4)O = 4x8^2 +5x8^1 + 6x8^0 +4x8^-1 = (302.5)D

(A11)H = 10x16^2 + 1x16^1 + 1x16^0 = (2577)D

  •  十进制数(Deciaml)转化为二进制数(Binary)、八进制数(Octal)、十六进制数(Hexadecimal)

将十进制数转换为X进制数时,可以将次数分成整数和小数两部分分别转换,然后拼接即可。

整数部分:采用除以X取余法,将十进制数不断除以X取余数,直到商为0,然后反向排列余数;

小数部分:采用除以x取整,将十进制小数部分不断除以x取整数,直到小数部分为0或达到所求的精度为止(小数部分可能永远不会的到0),然后正向排列得到转换后的小数部分。

  • 二进制数(Binary)、八进制数(Octal)、十六进制数(Hexadecimal)之间的相互转换

一位八进制数相当于3位二进制数,一位十六进制数相当于4位二进制数,所以转换方法比较简单。

二进制数转换为八进制数时,以对应二进制数小数点为中心向左右两边分组,每3位为一组,不足补0即可。

同样道理,二进制数转换为十六进制数时,以对应二进制数小数点为中心向左右两边分组,每4位为一组,不足补0即可。

将二进制数1101101110.110101 转换为八进制数

(001 101 101 110.110 101)B = (1556.65)O

将二进制数1101101110.110101 转换为十六进制数

(0011 0110 1110.1101 0100)B = (36E.D4)H

将八进制数转换为二进制数时,只需要将该八进制数1位数转化为3位就行

(1556.65)O = (001 101 101 110.110 101)B

将十六进制数转换为二进制数时,只需要将该十六进制数1位数转化为4位就行

(36E.D4)H = (0011 0110 1110.1101 0100)B

 

4、二进制数的算术运算

  • 加法

0 + 0 = 0

0 + 1 = 1 + 0 = 1

1 + 1 = 0 (被加数和加数为1,结果本位为1,按逢二进一向高位进1)

 

被加数        1   1   0   1                  13

加数            1   1   1   0                  14

进位 +)   1   1   0   0

结果       1   1   0   1   1                  27

 

  • 减法

0 - 0 = 1 - 1 =0

1 - 0 = 1

0 - 1 = 1(被减数为0,减数为1,结果本位为1,向高位借位)

 

被减数        1   1   0   1   1                             27

减数                 1   1   1   0                             14

借位 -)         1   1   0   0

结果            0   1   1   0   1                             13

 

  • 乘法

0 x 0 = 0

0 x 1 = 1 x 0 = 0

1 x 1 = 1

 

被乘数                           1   1   0   1                             13

乘数 x)                           1   0   1   0                             10

部分积                            0   0   0   0

                                  1   1   0   1

                             0   0   0   0

                        1   1   0   1

乘积            1   0   0   0   0   0   1   0                             130

 

  • 除法

0 / 0(无意义)

0 / 1 = 0

1 / 0(无意义)

1 /  1= 1

 

5、二进制数的逻辑运算

A

B

A^B

A | B

~A

~B

0

0

0

0

1

1

0

1

0

1

1

0

1

0

0

1

0

1

1

1

1

1

0

0

 

欢迎搜索个人微信公众号“宅男一号”加入宅基地,给你带来更多IT内容分享!

转载地址:http://nriii.baihongyu.com/

你可能感兴趣的文章
【TINY4412】U-BOOT移植笔记:(12)BEEP驱动
查看>>
单链表的修改和删除
查看>>
C++的三个基本特征:封装、继承、多态
查看>>
C++虚函数的总结
查看>>
什么是URL地址?
查看>>
C++多态的实现方式总结
查看>>
学习C++需要注意的问题
查看>>
C++模板
查看>>
C++双冒号(::)的用法
查看>>
【Unity】封装SQLite管理类
查看>>
【Unity】面试题整理
查看>>
【C#】如何实现一个迭代器
查看>>
【Unity】Destroy和DestroyImmediate的区别
查看>>
【Lua】Mac系统下配置SublimeText的Lua编译环境
查看>>
【C#】利用Conditional属性完成编译忽略
查看>>
【Unity】微信登录后将头像存为bytes,将bytes读取成sprite图片
查看>>
【Unity】使用GPS定位经纬度
查看>>
【UGUI/NGUI】一键换Text/Label字体
查看>>
【C#】身份证本地验证
查看>>
【Unity】坑爹的Bug
查看>>