首页 > 其他分享 >数据与二进制的联系

数据与二进制的联系

时间:2024-02-04 12:33:35浏览次数:30  
标签:逻辑 short 联系 二进制 负数 正数 数据 运算

要想对程序的运行机制形成一个大致印象,就要了解信息在计算机内部是以怎样的形势来表现的,又是以怎样的方式进行运算的。那想必大家一定好奇数据与二进制之间能有什么联系。这篇文章将会围绕二进制怎样表示数据以及为什么用二进制表示进行叙说。废话不多说,下面就让我为大家解释谜团吧。
想必大家都知道计算机内部是由IC这种电子部件构成的。我们前面一篇提到的CPU(微处理器)和内存也是IC的一种。IC多种多样,有的像一条黑色的蜈蚣。在其两侧有数个乃至数百个引脚;有的则像插花用的针盘,引脚在IC内部并排排列着。但是呢IC的引脚只能表示两个状态,一个是直流电压的0V,一个是直流电压的5V。它的这个特性,也决定了计算机的数据只能用二进制数来处理。计算机所处理的信息基本单位是8位二进制,所以二进制的位数一般是8的倍数。8位二进制数被称为一个字节。字节是最基本的信息计量单位;位是最小的单位;字节是基本单位。内存和磁盘都是使用字节单位来存储和读写数据,使用位单位则无法读写数据。
接下来介绍一下运算吧,和十进制数一样,四则运算同样也可以使用在二进制数中,只要注意逢2进位即可。什么是移位运算呢?它指的是将二进制数值的各数位进行左右移位(shift=移位)的运算。移位有左移(向高位方向)和右移(向低位方向)两种。在一次运算中,可以进行多个位数移位操作。其中右移可以用来填充右移后空出来的高位的数值,有0和1两种形式。要想区分两种,则需要掌握用二进制数表示负数的方法即可。二进制数表示负数值时,一般会把最高位作为符号来使用,因此我们把最高位称为符号位。符号位是0时表示正数,相反是1时表示负数。计算机在做减法运算时,实际上内部在做加法运算。反之亦然。所以在表示负数时就需要使用“二进制的补数”。补数就是用正数来表示负数,非常amazing吧。
编程语言包含的整数数据类型中,有的可以处理负数,有的则不能处理。例如,C语言的数据类型中,既有不能处理负数的unsigned short类型,也有能处理负数的short类型。这两种类型,都是2字节(=16位)的变量,都能表示2的 16次幂=65536种值,这一点是相同的。不过,值的范围有所不同,short类型是-32768~32767unsigned short类型是0~65535。此外,short类型和unsigned short类型的另一个不同点在于,short类型是将最高位为1的数值看作补数,而 unsigned short类型则是32768以上的值。仔细思考一下补数的机制,大家就会明白像-3276832767这样负数比正数多一个的原因了。最高位是0的正数,有032767共32768个,这其中也包含0。最高位是1的负数,有-1~-32768共32768个,这其中不包含0。也就是说,0包含在正数范围内、所以负数就要比正数多1个。虽然0不是正数,但考虑到符号位,就将其划分到了正数中。
大家听到逻辑这个词可能会感觉有些难,但实际上它很简单。在运算中,与逻辑相对的术语是算术。我们不妨这样考虑,将二进制数表示的信息作为四则运算的数值来处理就是算术。而像图形模式那样,将数值处理为单纯的0和1的罗列就是逻辑。算术运算是指加减乘除四则运算。逻辑运算是指对二进制数各数字位的0和!分别进行处理的运算,包括逻辑非(NOT运算)、逻辑与(AND运算)、逻辑或(OR运算)和逻辑异(XOR运算)四种。逻辑非指的是0变成1、1变成0的取反操作。逻辑与指的是“两个都是1”时,运算结果为1,其他情况下运算结果都为0的运算。逻辑或指的是“至少有一方是1”时,运算结果为1,其他情况下运算结果都是0的运算。逻辑异或指的是排斥相同数值的运算。“两个数值不同",也就是说,当“其中一方是1,另一方是0”时运算结果是1,其他情况下结果都是0。不管是几位的二进制数,在进行逻辑运算时,都是对相对应的各数位分别进行运算。如果将二进制数的0作为假(false)、1作为真(true)来考虑,逻辑运算也可以被认为是真假的运算。真和真的AND运算结果为真,实际上也确实如此。因为如果两方面都是真,答案就是真。

标签:逻辑,short,联系,二进制,负数,正数,数据,运算
From: https://www.cnblogs.com/hhn-viyo/p/18005939

相关文章

  • pytorch自带数据集MNIST
    一、简介pytorch自带的数据集由两个上层api提供,分别是torchvision和torchtext,其中:1、torchvision提供了对图片数据处理相关的api和数据   数据位置:torchvision.datasets,例如:torchvision.datasets.MNIST(手写数字图片数据)2、torchtext提供了对文本数据处理相关的api和数据......
  • 解决缓存与数据库同步下的同步锁问题之分段锁
    契子  在实际业务会我们会使用第三方的缓存例如:Reids、Memcache等;但是,并且我们在查询使用缓存时都得尽可能的保证缓存的一致性,在读取时得保证尽可能的保证缓存拿到的是数据库的最新数据,那么在实现的逻辑上一般都为这样:1、请求线程先读取缓存实现2、如果缓存没有数据的话触发......
  • redis有5种数据结构
    redis有5种数据结构,分别如下:5种数据结构python语言对5种数据结构的增删改查全局函数1|0redis连接importredispool=redis.ConnectionPool(host='localhost',port=6379,decode_responses=True)r=redis.Redis(connection_pool=pool)redis取出的结果默认是字节,可......
  • 学习解析几何的启示——去掉直接联系,采用中心化标准
    目录引入案例1:找出三角形的外心案例2:证明两条线段垂直案例3:确定与一组点等距离的点的位置案例4:研究二次曲线的性质思想引入同样的几何体,不同阶段所使用的解题技巧:在初中,熟悉几何定理,需要添加辅助线在高中,需要建立坐标系,采用向量的方法,套对应的公式解析几何之所以强大,在于......
  • 阻止内部数据泄漏:职员离职与数据保护
    在现今的商业环境中,职员变动极为常见,然而这种变动后的影响可能却被企业忽视。其中最关键的问题便是刚离开的员工可能会带走核心的公司研发数据,客户资料等敏感信息。一旦这些信息落入竞争对手手中,或者在公开市场上流传,那将对公司的业务产生严重的冲击。那么,如何防止这种情况发生呢?......
  • 推荐四款常用测试数据生成工具(适用自动化测试、性能测试)
    一、前言在软件测试中,测试数据是测试用例的基础,对测试结果的准确性和全面性有着至关重要的影响。因此,在进行软件测试时,需要生成测试数据以满足测试场景和要求。本文将介绍如何利用测试数据生成工具来快速生成大量的测试数据。二、测试数据生成工具今天给大家介绍四款常用的数......
  • pytorch数据集加载Dataset
    一、Dataset基类介绍在torch中提供了数据集的基类torch.utils.data.Dataset,继承这个基类,可以快速实现对数据的加载torch.utils.data.Dataset的源码如下:classDataset(Generic[T_co]):r"""Anabstractclassrepresentinga:class:`Dataset`.Alldatasetsthatrep......
  • 国产AI模型和美国顶级AI模型的距离在哪?—— 算力?算法?数据?
    前段时间去了长春一汽,聊了ReinforcementLearning方面的工作,既是面试,也是谈了谈意向,最后全部OK,本打算是签合同了,结果HR说要求有三年的社保缴纳证明工作经验,最后说可以减到24个月,不过说来也是有意思,我这人还真没社保,这就尴尬了,最后说这是上面的文件,国企就这要求,后来也只能作罢,但是......
  • 财务数据处理问题及解决方案分享
    一、平台介绍财务自营计费主要承接京东自营数据在整个供应链中由C端转B端的功能实现,在整个供应链中属于靠后的阶段了,系统主要功能是计费和向B端的汇总。二、问题描述近年来自营计费数据量大增,有百亿+的数据量,一天中汇总占据了一半的数据库资源。1、每天从单表千万W+中定位几万......
  • java直连mysql操作数据
    连接器importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;/***@author:chenKeFeng*@date:2024/1/3010:21*/publicclassMySQLConnector{pri......