首页 > 其他分享 >读数据是用二进制数表示的有感

读数据是用二进制数表示的有感

时间:2024-01-31 21:35:02浏览次数:25  
标签:运算 有感 二进制 取反 读数据 数值 补数 移位

在C和Java等高级语言编写的程序中,数值、字符串和图像等信息在计算机内部都是以二进制数值的形式来表示的。所以只要掌握了使用二进制数来表示信息的方法及其运算机制,就自然能够了解程序的运行机制。
一、用二进制数表示计算机信息的原因
计算机的内部是由IC构成的。IC有几种不同的形状,有的像一条黑色蜈蚣 ,其两侧有数个乃至数百个引脚;有的像插画用的针盘,引脚在IC内部并排排列着。IC的一个引脚只能表示两种状态,即直流电流0V和5V。也就是由于IC的这个特性决定了计算机的信息数据只能有二进制数来处理。对于同二进制数表示的信息,计算机不会区分他是数值、文字、还是图像的模式等,而是根据编写程序的各位对计算机发出的指示来进行信息的处理。
二、什么是二进制数
二进制是在数学和数字电路中以2为基数的记数系统,是以2为基数代表系统的二进制数。
三、移位运算和乘除运算的关系
二进制所特有的运算,也是计算机所特有的运算。移位运算指的是将二位制数值的各数位进行左右移位的运算。移位有左移(向高位方向)和右移(向低位方向)两种。在一次运算中,可以进行多个数位的移位操作。左移运算符<<,右移运算符>>。<<运算符和>>运算符的左侧是被移位的值,右侧表示要移位的位数。移位运算也可以通过数位移动来代替乘法运算和除法运算。例如,将00100111左移两位的结果是10011100,左移两位后数值变成了原来的4倍。
四、便于计算机处理的“补数”
二进制中表示负数值时,一般会把最高位作为符号来使用,因此我们把这个最高位成为符号位。符号位是0时表示正数,符号位是1时表示负数。“1”的二进制数是00000001,“-1”的二进制数是10000001。
计算机在做减法运算时,实际上内部是在做加法运算。为此,在表示负数时就需要使用“二进制的补数”。补数就是用正数来表示负数。为了获得补数,我们需要将二进制数的各数位的数值全部取反,然后再将结果加1。例如,用8位二进制数表示-1时,只需求得1,也就是00000001的补数即可。具体就是将各数位的0取反成1,1取反成0,然后将取反的结果加1,最后就转化成了11111111.补数求解的变换方法就是“取反+1”。
五、逻辑右移和算术右移的区别
右移有移位后在最高位补0和补1两种情况。当二进制数的值表示图形模式而非数值时,移位后需要在最高位补0。类似于霓虹灯往右滚动的效果。这就称为逻辑右移。
将二进制数作为带符号的数值进行运算时,移位后要在最高位填充移位前符号位的值。这就称为算术右移。
六、掌握逻辑运算的窍门
计算机能处理的运算,分为算术运算和逻辑运算。算术运算是指加减乘除四则运算。逻辑运算是指对二进制数各数字位的0和!分别进行处理的运算,包括逻辑非、逻辑与、逻辑或和逻辑异或四种。逻辑非指的是0变成1、1变成0的取反操作。逻辑与指的是“两个都是1”时,运算结果为1,其他情况下运算结果都是为0的运算。逻辑或指的是“至少有一方是1” 时,运算结果为1,其他情况下运算结果都是0的运算。逻辑异或指的是排斥相同数值的运算。

标签:运算,有感,二进制,取反,读数据,数值,补数,移位
From: https://www.cnblogs.com/chaipanpan/p/18000160

相关文章

  • 鸿蒙二进制数组创建
    背景c++层数据都是二进制,需要转换成arrayBuffer透传到ets层给业务使用,但是鸿蒙的使用下面两个api创建出来的二进制数组数据都是错误的。接口napi_create_arraybuffer:这个接口只能创建空的二进制数组,没办法把char的内容丢进去创建napi_create_external_arraybuffer:这个接口支持......
  • MySQL Shell 8.0.32 for GreatSQL编译二进制包
    MySQLShell8.0.32forGreatSQL编译二进制包构建MySQLShell8.0.32forGreatSQL0.写在前面之前已经写过一篇前传MySQLShell8.0.32forGreatSQL编译安装,最近再次编译MySQLShell二进制包时,发现了一些新问题,因此重新整理更新本文档。1.几处新问题这次编译MySQLShe......
  • [转][Java] 二进制、八进制、十进制、十六进制
    //二进制7System.out.println(0b111);//八进制73System.out.println(0111);//十进制111System.out.println(111);//十六进制273System.out.println(0x111);基本数据类型整数byte、short、int、long浮点数float、double字符  char布尔 boolean......
  • C#对象二进制序列化优化:位域技术实现极限压缩
    目录1.引言2.优化过程2.1.进程对象定义与初步分析2.2.排除Json序列化2.3.使用BinaryWriter进行二进制序列化2.4.数据类型调整2.5.再次数据类型调整与位域优化3.优化效果与总结1.引言在操作系统中,进程信息对于系统监控和性能分析至关重要。假设我们需要开发一个监控程序,该......
  • 数据库使用二进制表示的
    2.1——IC是集成电路的简称,有模拟ic和数字ic。IC的一个引脚只能表示0V和5V两种状态。二进制数的位数一般是8的倍数。8位二进制数被称为一个字节。字节是最基本的信息计量单位。2.2——数值的表现方法,进位计数制中各数位上可能有的数值的个数。十进制的基数是10,二进制数的基数是......
  • 在K8S中,二进制与Kubeadm安装有何区别?
    在Kubernetes(K8S)的部署中,二进制安装和使用Kubeadm工具进行安装的主要区别在于复杂性和灵活性:二进制安装手动与细致:通过下载官方提供的各个组件(如kube-apiserver、kube-controller-manager、kube-scheduler、etcd、kubelet、kubectl等)的二进制文件并手动配置每个组件的方式进行......
  • C语言代码实现:一个整数存储在内存中的二进制中的1的个数
    e.g.代码实现:一个整数存储在内存中的二进制中的1的个数#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>intmain(){ intnum=0; intcount=0; printf("统计num的补码中有几个1,请输入num:>"); scanf("%d",&num); //统计num的补码中有几个1 //法一 //while(nu......
  • 第一周培训crypto相关补充(Base家族-八卦图与二进制-md5)
    一.Base家族及其特点(1)Base161.编码后的字符只会在(0-9,A-F共16个)中出现。2.编码后的字符为源字符的两倍,4个bit一组,而1字节8bit,所以base16不可能用等号填充。(2)Base321.编码后的字符只会由大写字母(A-Z)和数字23456732个字符组成。2.因为base325bit为一组,所以编码长......
  • 《构建之法》读后有感
    《构建之法:现代软件工程》是一本深入探讨软件工程领域的经典著作,作者是LarryConstantine。在阅读完这本书后,我深受启发,对软件工程的理念和方法有了更深入的理解。首先,这本书强调了软件设计和开发的基本原则和规律。作者提出了一系列关于软件构建的原则,如模块化、可重用性、可维......
  • 程序是怎样跑起来的有感
    第一章cpu这周我通过对程序是怎样跑起来的学习了第一章,系统了解了什么是cpu,他的内部结构,功能以及作用,通过学习和网上查阅资料我大致总结了以下几点一cpu的组成1、运算器:计算机运行时,运算器的操作和操作种类由控制器决定。运算器处理的数据来自存储器;处理后的结果数据通常送回......