0、开篇

(1)32位是几个字节?
4个字节
(2)二进制数01011100转换成十进制数是多少?
92
(3)二进制数00001111左移两位后,会变成原数的几倍?
4倍
(4)补码形式表示的8位二进制数11111111,用十进制数表示的话是多少?
-1
(5)补码形式表示的8位二进制数10101010,用16位的二进制数表示的话是多少?
1111111110101010
(6)反转部分图形模式时,使用的是什么逻辑运算?
异或运算XOR运算
在高级语言编写的程序中,数值、字符串和图像等信息在计算机内部都是以二进制数值的形式来表现的。

1、用二进制数表示计算机信息的原因

① IC:集成电路,有几种不同的形状,有的像一条黑色蜈蚣,在其两侧有数个乃至数百个引脚;有的则像插花用的针盘,引脚在IC内部并排排列着。IC的所有引脚,只有直流电压0V或5V连个状态。也就是说,IC的一个引脚,只能表示两个状态。

② IC的特性,决定了计算机的信息数据只能用二进制数来处理。
③ 计算机处理信息的最小单元-位,就相当于二进制中的一位,也就是bit。
二进制数的位数一般是8位、16位、32位........也就是8的倍数,这是因为计算机所处理的信息的基本单位是8位二进制。8位二进制数被称为一个字节。字节是最基本的信息计量单位。位是最小单位,字节是基本单位。内存和磁盘都使用字节单位来存储和读写数据,使用位单位则无法读取数据。
④ 程序中,即使是用十进制数和文字等记述信息,在编译后也会转换成二进制数的值,所以,程序运行时计算机内部处理的也是用二进制数表示的信息。

⑤对于用二进制数表示的信息,计算机不会区分它是数值、文字还是某种图片的模式等。而是根据编写程序的各位对计算机发出的指示来进行信息的处理(运算)。

2、什么是二进制数

为了能更清晰地说明二进制数的机制,首先需要明白二进制转换成十进制的实际步骤。
二进制数的值转换成十进制的值,只需将二进制数的各数位的值与位权相乘,然后将相乘的结果相加即可。
10进制的39:3*10^1+9*10^0=39
2进制的39:00100111(二进制数)
(0*2^7)+(0*2^6)+(1*2^5)+(0*2^4)+(0*2^3)+(1*2^2)+(1*2^1)+(1*2^0)
0+0+32+0+0+4+2+1=39 
对比上面的两种转换方式,大家应该能注意到,不同的就只是位权的不同而已,十进制的位权是10,而二进制的位权是2。

3、移位运算和乘除运算的关系

在了解了二进制数的机制后,接下来我们来看一下运算。和十进制数一样,四则运算同样也可以使用在二进制数中。10进制是逢10进1,而2进制是逢2进1。
① 移位运算:将二进制数值的各数位进行左右移位的运算。位移有左移<<(向高位方向)和右移>>(向低位方向)两种。
a=39;
b=a<<2;
② 问题来了,左移后低位有空位,右移后高位有空位,怎么办,要补上什么样的数值呢?
(1)左移后低位空位都是补0;
(2)右移后高位补什么呢?这个后续会说明。
③ 将00100111左移两位的结果是10011100,数值变成了原来的4倍,用十进制表示的话,数值从39变成了156,也正好是4倍。这与十进制的移位运算也是符合的,十进制数左移后也会变成原来的10倍、100倍。1000倍……同样,二进制数左移后也会变成原来的2倍、4倍、8倍,反之右移就会变成原来的1/2、1/4、1/8。

4、便于计算机处理的“补数”

上一小节说了,右移的操作说明会在后续说明,这里就是后续了。先补充一个知识点:计算机在做减法运算时,实际上内部是在做加法运算的。
右移后空出来的高位数值,有0和1两种形式,要想区分什么时候补0什么时候补1,只要掌握了用二进制数表示负数的方法就可以了。
二进制数中表示负数值时,一般会把最高位作为符号来使用,因此我们把这个最高位成为符号位。符号位为0表示正数,1表示负数。那么-1用8位二进制数怎么表示呢,很多人会认为是10000001,其实这是错的,二进制表示为11111111。计算机是用“二进制的补数”来表示负数的。补数就是用整数来表示负数,过程就是:取反+1。所谓取反,就是将各数位的0反转成1,1取反为0。大家现在就可以试试-1的8进制表示形式了。
补数的思考方式虽然直观上不易理解,但逻辑上却非常严谨,大家可以试试1-1的运算,也就是1+(-1)运算。

上图的运算很明显是错的,这时,我们把-1表示成11111111来进行运算。

为什么使用补数后就能正确地表示负数了呢?大家可以再详细的看看上图,有一个位溢出去了,而溢出的那一位数计算机是不进行处理的。
有一个法则大家必须牢记:"将二进制数的值取反后加1的结果,和原来的值相加,结果为0”这个法则。
总之,要想结果为0,就必须通过补数来实现。当然,结果不为0的运算同样可以通过使用补数来得到正确的结果,不过,有一点需要注意,当运算结果为负数时,计算结果的值也是以补数的形式来表示的。
3-5的运算:
3:00000011
-5:11111011
00000011+11111011=11111110,最高位变成了1。这就代表结果为一个负数。那11111110表示的负数是多少呢?负负得正大家都知道,所以通过求解补数的补数,就可知道该值的绝对值。所以11111110,取反后加1后为00000010,十进制就是2。所以结果就是-2。
编程语言包含的整数数据类型中,有的可以表示负数,有的也不能表示。C语言中的unsigned short类型,能表示的范围就是0~65535。而short类型是-32768~32767.
大家可以仔细思考一下-32768~32767这样负数比正数多一个的原因。(+0和-0)

5、逻辑右移和算术右移的区别

开始区分右移高位的区分:
① 当二进制数的值表示图形模式而非数值时,移位后需要在最高位补0、类似于霓虹灯往右滚动的效果,这就成为逻辑右移。
② 将二进制数作为带符号的数值进行运算时,移位后要在最高位填充移位前符号位的值(0或1)。这就是算术右移。如果数值是用补数表示的负数值,那么右移后在空出来的最高位补1,就可以正确地实现1/2、1/4等的运算。如果是正数,就补0。

③ 只有在右移时才必须区分逻辑位移和算术位移。左移时,无论是图形模式(逻辑左移)还是相乘运算(算术左移),都只需要在空出来的低位补0即可。
④ 符号扩充:就是指在保持值不变的前提下将其转换成16位和32位的二进制数。那怎么扩充呢,很简单,不管是正数还是用补数表示的负数,都只需用符号位的值(0或者1)填充高位即可。

6、掌握逻辑运算的窍门

计算机能处理的运算,大体可分为算术运算与逻辑运算。算术运算是指加减乘除四则运算。逻辑运算是指对二进制数各数字位的0和1分别进行处理的运算,包括逻辑非(NOT运算)、逻辑与(AND运算)、逻辑或(OR运算)和逻辑异或(XOR运算)四种。
① 逻辑非指的是0变成1、1变成0的取反操作。
② 逻辑与指的是“两个都是1”时,运算结果才为1,其他情况下运算结果都为0的运算;
③ 逻辑或指的是“至少有一方是1”时,运算结果为1,其他情况下运算结果都是0的运算;
④ 逻辑异或指的是排斥相同数值的运算,“两个数值不同”,也就是说,当“其中一方是1,另一方是0”时运算结果是11,其他情况下结果都是0
下图是对NIKKEI的头两个字母NI这一图形模式进行各种逻辑运算后的结果。假定白色部分表示1,黑色部分表示0。

转载于:https://www.cnblogs.com/Helius/p/7142535.html

二:数据是用二进制数表示的相关推荐

  1. 详解计算机内部存储数据的形式 二进制数

    详解计算机内部存储数据的形式-二进制数 前言 要想对程序的运行机制形成一个大致印象,就要了解信息(数据)在计算机内部是以怎样的形式来表现的,又是以怎样的方法进行运算的.在 C 和 Java 等高级语言 ...

  2. 【DBMS 数据库管理系统】数据仓库特征 ( 特征一 : 面向主题组织数据 | 特征二 : 数据集成 | 特征三 : 数据不可更新 | 特征四 : 随时间不断变化 )

    文章目录 一.特征一 : 面向主题 数据组织方式 二.特征二 : 数据集成 三.特征三 : 数据不可更新 四.特征四 : 数据仓库中的数据 随时间不断变化 一.特征一 : 面向主题 数据组织方式 主题 ...

  3. 编写一个程序,实现将存放在AX和DX中的32位数据循环右移二进制数的4位。(DX存放高字节内容,AX存放低字节内容)

    编写一个程序,实现将存放在AX和DX中的32位数据循环右移二进制数的4位.(DX存放高字节内容,AX存放低字节内容) P151 例4.9 汇编思路: AX右移四位后,使用BH接收AL的低四位数据,得到 ...

  4. 计算机数据表示实验报告,实验报告二数据的表示

    <实验报告二数据的表示>由会员分享,可在线阅读,更多相关<实验报告二数据的表示(4页珍藏版)>请在人人文库网上搜索. 1.计算机系统基础实验报告学院 信电学院 专业 计算机科学 ...

  5. 实验二 数据选择器的设计与vivado集成开发环境【Verilog】

    实验二 数据选择器的设计与vivado集成开发环境[Verilog] 前言 实验二 数据选择器的设计与vivado集成开发环境 一.实验目的 二.实验环境 三.实验任务 四.实验原理 五.实验步骤 六 ...

  6. 计算机硬件数据统计实验报告,实验二数据统计.docx

    实验二数据统计.docx 南京航空航天大学电工电子实验中心实验报告课程名称计算机硬件技术基础实验名称数据统计姓名学号评定成绩审阅教师实验时间20170502南京航空航天大学南京航空航天大学一.实验目的 ...

  7. RfDNet 在Ubuntu16下的配置与运行——(二)数据准备与训练

    RfDNet 在Ubuntu16下的配置与运行--(二)数据准备与训练 相关博客:RfDNet 在Ubuntu16下的配置与运行--(一)运行Demo 接上篇,现在需要下载数据,官方使用的训练数据为: ...

  8. java爬取网页数据_Python网络爬虫实战(二)数据解析

    Python网络爬虫实战 (二)数据解析 本系列从零开始阐述如何编写Python网络爬虫,以及网络爬虫中容易遇到的问题,比如具有反爬,加密的网站,还有爬虫拿不到数据,以及登录验证等问题,会伴随大量网站 ...

  9. 基于深度学习的脑电图识别 综述篇(二)数据采样及处理

    作者|Memory逆光 本文由作者授权分享 导读 脑电图(EEG)是一个复杂的信号,一个医生可能需要几年的训练并利用先进的信号处理和特征提取方法,才能正确解释其含义.而如今机器学习和深度学习的发展,大 ...

  10. .Net+MySQL组合开发(二) 数据访问篇

    一.建立数据库.表.添加数据 这里我们使用图形化操作的SQL Manager 2005 Lite for MySQL来建立数据,它的操作界面非常类似OFFICE软件,使用方便.很容量上手.下面开始建立 ...

最新文章

  1. C++关键字:重学记录
  2. python删除指定天数前的文件_python 删除指定时间间隔之前的文件实例
  3. 行为设计模式 - 访客设计模式
  4. Sobel两种算子形式
  5. 如何使用mysql建立项目_【dbForge Studio for MySQL入门教程】如何在项目中使用数据库对象和如何使用项目构建配置...
  6. win10一键改字体
  7. 使用Python批量转换图片格式
  8. chrome消除缓存的默认设置
  9. SSM | SpringMVC
  10. 程序员创业:小程序开发费用报价表,包含项目工期和费用明细
  11. data mining (foreign blogs)
  12. phpcms V9 模板使用 模板安装 模板怎么用?
  13. 精益质量管理简析(转载)
  14. Logstash过滤详解(一知半解)
  15. tcp socket 和 socket文件
  16. Animation和Animator的区别
  17. linux实践感悟与体会100字,掌上综素b5学科时间活动心得体会50字
  18. 高情商的王维注解了低政商孟浩然的后半生
  19. 网易云信短信接口java_短信接入示例
  20. Reinforcement Learning | 强化学习十种应用场景及新手学习入门教程

热门文章

  1. FastSocket学习笔记~再说客户端与服务端的组成
  2. MySQL高可用性分析
  3. OC中方法与函数的区别
  4. LAMP-各PHP加速器性能剖析
  5. 批量获取客户端时间偏差
  6. CCNA配置试验之八 帧中继——点到点子接口(point-to-point)的配置
  7. java导入文件太大 处理速度慢_java – 处理大文件时IntelliJ非常慢
  8. 计算机科学工程哲学学位,2020年剑桥大学硕士读多久
  9. java版mc植物生长条件_植物生长三大必要条件
  10. 广度搜索 -- 9.1 Word Ladder -- 求是否有解 -- 图解