首页 > 编程语言 >《程序是怎样跑起来的》第二章——数据是用二进制数表示的?

《程序是怎样跑起来的》第二章——数据是用二进制数表示的?

时间:2024-02-02 15:56:08浏览次数:24  
标签:右移 运算 符号 二进制 程序 取反 第二章 补数

关于第二章,主要讲了关于二进制方面的知识。

书上说大家都熟知计算机内部是由IC这种电子部件构成的,IC有不同的形状,带相同的是都有很多引脚,其实见过CPU的都知道CPU下部有着密密麻麻的针脚,IC的所有针脚都只有直流电压0V和0.5V两个状态,也就是说,一个针脚,只能表示两个状态。而这就决定了数据信息只能有二进制来处理(二进制不是专门为IC设计的,只是他们的特性非常契合),二进制的最小单位为bit(位),即二进制中的一位,而计算机处理数据的基本单位为字节(bite),一个字节等于8位。还有二进制如何转换为十进制,书中非常明了:

初步了解了什么是二进制后书中就讲解了关于二进制数的各种运算方法,移位运算、四则运算,还有什么是补数,逻辑右移和算术右移的区别、二进制数的逻辑运算。

移位运算分为向高位方向和向低位方向两种,一次可以进行多位的移位操作,并且不论程序中使用的几进制,计算机内部都会转换为二进制后进行移位运算,此外二进制的移位运算会导致二进制位溢出或空位,这时只需低位空位补零,溢出丢弃即可。这里有个神奇的点,高位空位怎么办呢?这就涉及到补数了,在二进制中表示负数是一般会把高位来当做符号位,0时表示正数,1时表示负数,这里书中有一个问题,我刚开始也想错了,-1的二进制数是多少呢?正确答案为11111111。确实让我没想到,我本认为是10000001。书中做了解释:计算机在做减法运算时,实际上内部再做加法运算,用加法运算来实现减法运算!所以在表示负数是要使用‘二进制的补数’,补数就是用正数来表示负数的,真令人新奇。而11111111这个结果这样得来的:为了获得补数对二进制数进行取反,将00000001取反后为11111110,再将取反的结果加1 就得来了11111111。所移补数求解的变换方法就是:取反+1。(法则:将二进制数的支取饭后+1的结果,和原来的值相加,结果为0)。

返回右移这个话题,逻辑右移是指将一个二进制数的所有位向右移动指定的位数,右侧空出的位用零填充。逻辑右移不考虑符号位,只对数值位进行移动。逻辑右移只是简单地将位向右移动,不关心数值的正负。如果要进行算术右移,需要考虑符号位的影响。只有在右移时候才必须分逻辑右移和算术右移。

补充:一、符号扩充:

符号扩充是一种在二进制数中进行符号位的扩展的操作。它通常用于将一个较短的有符号二进制数扩展为一个较长的有符号二进制数,以保持数值的符号不变。

符号扩充的过程是将原始有符号二进制数的符号位复制到更高位,使得新的二进制数在位数上与原始二进制数相同或更长。

例子:假设我们有一个 4 位的有符号二进制数 1101,其中最高位是符号位,表示这是一个负数。现在我们要将其扩展为 8 位的有符号二进制数,扩展的过程如下:

  1. 复制符号位:将原始二进制数的最高位(即符号位)复制到新的二进制数的高位,得到 11111101。

  2. 填充数值位:由于原始二进制数只有 4 位,需要在低位填充 0,得到 11111101 00000000。

这样,我们就完成了将一个较短的有符号二进制数扩展为一个较长的有符号二进制数的过程。在进行运算时,可以使用这个扩展后的二进制数来保持符号不变并正确地参与运算

二、逻辑运算:二进制中的逻辑运算有与(and)或(or)非(not)和异或(xor)四种,而逻辑运算java中早有接触。

 

标签:右移,运算,符号,二进制,程序,取反,第二章,补数
From: https://www.cnblogs.com/wcpp/p/17989173

相关文章

  • 程序员数学阅读笔记
    引入抽象是有原因的:它可以帮助你组织和交流更宏大、更强有力的思想。数学在许多软件工程领域都有着趣味盎然和收益颇丰的应用。数学可以量化随时间变化的数据的趋势,如预测股票价格的走势。数字元组(称为向量)代表多维数据。具体来说,三维向量是三元数对,可以表示空间中的点。可以通......
  • linux系统mysql下载安装(二进制下载)
    最近在重新学习测试的基础知识,刚好学到数据库这一章,打算搭建一套linux系统上搭建mysql的服务端,简单做个记录,今天主要了解了二进制下载CentOs默认使用的软件包管理器是yum,我是用的是CentOs7,执行安装命令为:sudoyuminstallmysql-server,但是在安装的时候遇到问题,提示“没有可用软......
  • 已解决 -- 'swig'不是内部或外部命令,也不是可运行的程序或批处理文件
    最近在学强化学习的PPO算法,需要用到pipinstallbox2dbox2d--user这一指令,但需要下载并安装swighttps://www.swig.org/download.html  这是官网之后的步骤按照Win10下安装swig_windows10安装swig-CSDN博客就可以----------------------------------------------------......
  • 微信小程序激励视频广告的坑
    微信小程序激励视频广告的坑:1.同一个页面,如果不想在onLoad的时候拉取广告,而是想在点击按钮的时候拉取并展示广告,不能先销毁再创建广告(ad.destory()),销毁了广告实例后在这个页面永远也拉不到广告了。同一页面中如果想多次拉取,只能复用同一个广告实例,不能销毁这个实例。2.......
  • 微信公众号链接小程序HTML代码
     <!--格式--><adata-miniprogram-appid="小程序APPID"data-miniprogram-path="小程序页面"data-miniprogram-nickname="小程序名称"data-miniprogram-type="image"data-miniprogram-servicetype=""><imgcla......
  • 上门预约家政小程序开发:打造便捷家政服务新体验
    随着生活节奏的加快,人们对于家政服务的需求越来越高,传统家政服务方式已经无法满足现代人的需求。因此,一款便捷、高效的上门预约家政小程序应运而生。本文将介绍上门预约家政小程序的开发背景、功能特点、技术实现和未来发展。一、开发背景随着移动互联网的普及,越来越多的用户开始习......
  • 【程序人生】可转债基础知识,优缺点
    什么是可转债?可转债,全称为可转换债券,是一种具有债券和股票双重属性的金融产品。投资者购买可转债后,可以在规定的期限内将其转换为公司的股票。换句话说,可转债是一种特殊的债券,它赋予投资者在未来某个时间点将债券转换为股票的权利。可转债的特点固定收益:与普通债券一样,可转债......
  • 微信第三方开放平台代小程序实现业务,一整套流程
    大家好,我是小悟微信小程序第三方平台开发着力于解决微信生态体系内的小程序管理问题,一套模板,随处部署。能尽可能地减少系统服务商的开发成本,系统服务商只用开发一套小程序代码作为模板就可以快速孵化出大量的商家小程序。第三方平台是第三方服务商帮助小程序开发者进行注册小程序、......
  • 《计算机程序的构造和解释(原书第2版)》PDF
    内容简介《计算机程序的构造和解释》成型于美国麻省理工学院(MIT)多年使用的一本教材,1984年出版,1996年修订为第二版。在过去的二十多年里,该书对于计算机科学的教育计划产生了深刻的影响。在第二版中,大部分重要程序设计系统都重新修改并做过测试,包括各种解释器和编译器。作者根据其后......
  • 《程序是怎样跑起来的》第一章读后感
    阅读了该书后,我对计算机程序和计算机的工作原理有了更深入的了解,也对变成有了更直观的认识。以下是读后感:1.计算机的基本组成:通过计算机的五大部件(运算器、控制器、储存器、输入设备和输出设备)的协同工作,计算机可以执行各种任务,这让我对计算机的内部结构有了清晰的认识......