精华内容
下载资源
问答
  • 详解 & 0xff 的意义作用

    千次阅读 2020-10-23 11:37:29
    表示按与,只有两个同时为1,才能得到1, 0x代表16进制,0xff表示的数二进制1111 1111 占一个字节.其进行&操作的数,最低8,不会发生变化. 下面着重来说说&0xff都有哪些应用: 1. 只是为了取得低八位 ...

    首先我们要都知道, &表示按位与,只有两个位同时为1,才能得到1, 0x代表16进制数,0xff表示的数二进制1111 1111 占一个字节.和其进行&操作的数,最低8位,不会发生变化.

    下面着重来说说&0xff都有哪些应用:

    1. 只是为了取得低八位

    通常配合移位操作符>>使用

    例如:java socket通信中基于长度的成帧方法中,如果发送的信息长度小于65535字节,长度信息的字节

    定义为两个字节长度。这时候将两个字节长的长度信息,以Big-Endian的方式写到内存中

    out.write((message.length>>8)&0xff);//取高八位写入地址
    out.write(message.length&0xff);//取低八位写入高地址中
    
    • 1
    • 2

    例如,有个数字 0x1234,如果只想将低8位写入到内存中 0x1234&0xff
    0x1234 表示为二进制 0001001000110100

    0xff 表示为二进制 11111111

    两个数做与操作,显然将0xff补充到16位,就是高位补0

    此时0xff 为 0000000011111111

    与操作 1&0 =0 1&1 =1 这样 0x1234只能保留低八位的数 0000000000110100 也就是 0x34

    2. 保证补码的一致性

    我们只关心二进制的机器数而不关注十进制的值,那么byte &0xff只是对其最低8位的复制,通常配合逻辑或 ‘’|’'使用,达到字节的拼接,但不保证其十进制真值不变

    public static void main(String[] args) {
    		byte b = -127;//10000001
    		int a =  b;
    		System.out.println(a);
    		a =  b&0xff;
    		System.out.println(a);
    	}//输出结果-127,129
    

    乍一看,b是8位的二进制数,在与上0xff(也就是 11111111),不就是其本身吗,输出在控制台结果为什么是129呢?

    首先计算机内的存储都是按照补码存储的,-127补码表示为 1000 0001

    int a = b;将byte 类型提升为int时候,b的补码提升为 32位,补码的高位补1,也就是

    1111 1111 1111 1111 1111 1111 1000 0001

    负数的补码转为原码,符号位不变,其他位取反,在加1,正数的补码,反码都是本身

    结果是 1000 0000 0000 0000 0000 0000 0111 1111表示为十进制 也是 -127

    也就是 当 byte -> int 能保证十进制数不变,但是有些时候比如文件流转为byte数组时候,

    我们不是关心的是十进制数有没有变,而是补码有没有变,这时候需要&上0xff

    本例子中,将byte转为int 高24位必将补1,此时补码显然发生变化,在与上0xff,将高24重新置0,

    这样能保证补码的一致性,当然由于符号位发生变化,表示的十进制数就会变了

    1111 1111 1111 1111 1111 1111 1000 0001 
    
    &
    
    0000 0000 0000 0000 0000 0000 1111 1111
    
    结果是
    
    0000 0000 0000 0000 0000 0000 1000 0001
    

    和原来的补码 一致,但是显然符号位变化了,表示的十进制数发生变化,变为129

    结论:

    java中基本类型从小扩展到大的数据类型时候,正数因为符号位是0,无论如何都是补零扩展,但是负数补零扩展和补符号位扩展完全不同,

    负数补符号位扩展,保证十进制数不变

    例如 byte>>>int -127自动按照补符号位扩展,在高24位补符号位1,表示的十进制数不变

    补零扩展,保证补码的一致性,但是表示的十进制发生变化

    例如,本例中byte提升为int,&0xff的操作

    参考:byte为什么要&0xff

    展开全文
  • ESSνSB提议主要目的是通过利用Pμe通道第二个振荡最大值处物理学发现具有高意义的轻子CP相位δCP(对于δCP50%值为5σ)。... 我们讨论了结合不同实验数据时导致灵敏度提高各种简并性协同作用
  • Python运算符的作用与每个python运算符的意义什么是运算符?本章节主要说明Python的运算符。举个简单的例子 4 +5 = 9 。 例子,4 5 被称为操作,"+" 称为运算符。Python语言支持以下类型的运算符:1...

    Python运算符的作用与每个python运算符的意义

    什么是运算符?

    本章节主要说明Python的运算符。举个简单的例子 4 +5 = 9 。 例子中,4 和 5 被称为操作数,"+" 称为运算符。

    Python语言支持以下类型的运算符:

    1.算术运算符

    2.比较(关系)运算符

    3.赋值运算符

    4.逻辑运算符

    5.位运算符

    6.成员运算符

    7.身份运算符

    8.运算符优先级

    接下来让我们一个个来学习Python的运算符。

    Python算术运算符

    以下假设变量: a=10,b=20:

    运算符

    描述

    实例

    +

    加 - 两个对象相加

    a + b 输出结果 30

    -

    减 - 得到负数或是一个数减去另一个数

    a - b 输出结果 -10

    *

    乘 - 两个数相乘或是返回一个被重复若干次的字符串

    a * b 输出结果 200

    /

    除 - x除以y

    b / a 输出结果 2

    %

    取模 - 返回除法的余数

    b % a 输出结果 0

    **

    幂 - 返回x的y次幂

    a**b 为10的20次方, 输出结果 100000000000000000000

    //

    取整除 - 返回商的整数部分(向下取整)

    9//2 输出结果 4 , 9.0//2.0 输出结果 4.0

    以下实例演示了Python所有算术运算符的操作:

    #!/usr/bin/python#

    -*- coding: UTF-8 -*-

    a = 21

    b = 10

    c = 0

    c = a + b

    print "1 - c 的值为:", c

    c = a - b

    print "2 - c 的值为:", c

    c = a * b

    print "3 - c 的值为:", c

    c = a / b

    print "4 - c 的值为:", c

    c = a % b

    print "5 - c 的值为:", c

    # 修改变量 a 、b 、c

    a = 2

    b = 3

    c = a**b

    print "6 - c 的值为:", c

    a = 10

    b = 5

    c = a//b

    print "7 - c 的值为:", c

    以上实例输出结果:

    1 - c 的值为: 31

    2 - c 的值为: 11

    3 - c 的值为: 210

    4 - c 的值为: 2

    5 - c 的值为: 1

    6 - c 的值为: 8

    7 - c 的值为: 2

    以上就是什么是运算符?Python 运算符的作用与每个python运算符的意义的详细内容,更多请关注码农之家其它相关文章!

    以上就是本次给大家分享的关于java的全部知识点内容总结,大家还可以在下方相关文章里找到相关文章进一步学习,感谢大家的阅读和支持。

    您可能感兴趣的文章:

    展开全文
  • 结果:与对照组相比,HCC患者中AFPGPC3的中位数水平显着更高。 ROC曲线分析表明,AFPGPC3均可用于区分HCC病例对照组。 GPC3AFPAUROC分别为0.9280.727,且在p值<0.0001情况下均具有统计学意义。 ...
  • 数据的代表平均数 学习目标 理解数据的权和加权平均数的概念 会算加权平均数 了解平均数在数据统计中的意义和作用 学习过程 环节一数据的权与加权平均数通过学生熟悉的3个问题层层深入让学生在试误的过程逐步体会...
  • 原码的作用 进行加法运算 但是当进行有符号之间的加法时,会出现...在此运算里面模为12,5mod12-7mod12所对应的意义相同,都是将10点变为3点。 由此可以看到,在计算机,记一个字长为8bit,所以大小为0000000

    原码的作用

    进行加法运算
    在这里插入图片描述
    但是当进行有符号数之间的加法时,会出现错误。
    在这里插入图片描述
    结果非0,所以便引入补码。

    补码的作用

    补码是为了让减法操作变为加法操作,减少硬件的成本。
    正数的补码为其本身,负数的补码为符号位不变,其余位取反加一。

    如何理解补码?
    以时钟举例,现在是10点,想要变为3点,可以顺时针旋转5格,记为+5;也可以逆时针旋转7格,记为-7。在此运算里面模为12,5mod12和-7mod12所对应的意义相同,都是将10点变为3点。
    由此可以看到,在计算机中,记一个字长为8bit,所以大小为00000000~11111111,由此可以理解模为2^8。
    公式:模-a的绝对值=a的补码(a为负数)
    例如10001010(-18)的绝对值为00001010(18)
    a的补码为反码加1,11110110(-18的补码)
    由上述公式可得:
    100000000=00001010+11110110
    理解补码后,将减法变为加法例如18减去18等于18加上(-18),意义等同于加上-18的补码。
    结果本应该为100000000,但是只有8位存储,所以去掉最高位1,结果为00000000。

    例子:
    48-19=48+(-19)
    -19的补码为11101101

    在这里插入图片描述
    去掉最高位得00011101(29)

    移码

    方便比较大小

    展开全文
  • 开始看到这里我还不知道补码是什么,然后花了几个小时理解了原码,反码,补码的意义作用。 然后我知道了输出的结果是将60的二进制00111100按取反得到的补码, 于是我便想新设置一个c值,然后反推出a值来...
  • Ethernet以太网作用

    2020-08-29 14:52:01
    由于单纯电平信号"0""1"没有任何意义,在实际应用,我们会将电平信号进行分组处理,多少一组、每组什么意思,这样数据才有具体含义。数据链路层功能就是定义电平信号分组方式。 1:以太网协议: 数据链路...

    物理层:

    物理层主要是基于电器特性发送高低电平信号,电平即"电压平台",指的是电路中某一点电压的高低状态,在网络信号中高电平用数字"1"表示,低电平用数字"0"表示。电平的高低是个相对概念,3V对于7V是低电平,但对于1V就是高电平。

    数据链路层:

    由于单纯的电平信号"0"和"1"没有任何意义,在实际应用中,我们会将电平信号进行分组处理,多少位一组、每组什么意思,这样数据才有具体含义。数据链路层的功能就是定义电平信号的分组方式。

    1:以太网协议:

    数据链路层使用以太网协议进行传输,基于MAC地址的广播方式实现数据传输,只能在局域网内广播。早起各个公司都有自己的分组方式,后来形成了统一标准,即以太网协议Ethernet。

    2:Ethernet以太网

    由一组电平信号构成一个数据包,叫做"帧",每一个数据帧由报头Head和数据Data两部分组成。

     3:Ethernet以太网帧格式

    以太网上使用两种标准帧格式。

    1. 第一种是上世纪80年代初提出的DIXv2格式,即EthernetII帧格式。EthernetII后来被IEEE802标准接纳,并写进了IEEE802.3x-1997的3.2.6节。
    2. 第二种是1983年提出的IEEE802.3格式。

    这两种格式的主要区别在于,EthernetII格式中包含一个Type字段,标识以太帧处理完成之后将被发送到哪个上层协议进行处理。

    IEEE802.3格式中,同样的位置是长度字段。不同的Type字段值可以用来区别这两种帧的类型,当Type字段值小于等于1500(或者十六进制的0x05DC)时,帧使用的是IEEE802.3格式。当Type字段值大于等于1536(或者十六进制的0x0600)时,帧使用的是EthernetII格式。

    以太网中大多数的数据帧使用的是EthernetII格式。

    以太帧中还包括源和目的MAC地址,分别代表发送者的MAC和接收者的MAC,此外还有帧校验序列字段,用于检验传输过程中帧的完整性。

    4:Ethernet_II帧格式

     

    • Ethernet_II帧类型值大于等于1536(0x0600)。
    • 以太网数据帧的长度在64-1518字节之间。

    Ethernet_II的帧中各字段说明如下:

    1. DMAC(DestinationMAC)是目的MAC地址。DMAC字段长度为6个字节,标识帧的接收者。
    2. SMAC(SourceMAC)是源MAC地址。SMAC字段长度为6个字节,标识帧的发送者。
    3. 类型字段(Type)用于标识数据字段中包含的高层协议,该字段长度为2个字节。类型字段取值为0x0800的帧代表IP协议帧;类型字段取值为0806的帧代表ARP协议帧。
    4. 数据字段(Data)是网络层数据,最小长度必须为46字节以保证帧长至少为64字节,数据字段的最大长度为1500字节。
    5. 循环冗余校验字段(FCS)提供了一种错误检测机制。该字段长度为4个字节。

    5:EEE802.3帧格式

    EEE802.3帧长度字段值小于等于1500(0x05DC)。

    EEE802.3帧格式类似于Ethernet_II帧,只是Ethernet_II帧的Type域被802.3帧的Length域取代,并且占用了Data字段的8个字节作为LLC和SNAP字段。

    1. Length字段定义了Data字段包含的字节数。
    2. 逻辑链路控制LLC(LogicalLinkControl)由目的服务访问点DSAP(DestinationServiceAccessPoint)、源服务访问点SSAP(SourceServiceAccessPoint)和Control字段组成。
    3. SNAP(Sub-networkAccessProtocol)由机构代码(OrgCode)和类型(Type)字段组成。Orgcode三个字节都为0。Type字段的含义与Ethernet_II帧中的Type字段相同。IEEE802.3帧根据DSAP和SSAP字段的取值又可分为以下几类:
    • 当DSAP和SSAP都取特定值0xff时,802.3帧就变成了Netware-ETHERNET帧,用来承载NetWare类型的数据。
    • 当DSAP和SSAP都取特定值0xaa时,802.3帧就变成了ETHERNET_SNAP帧。ETHERNET_SNAP帧可以用于传输多种协议。
    • DSAP和SSAP其他的取值均为纯IEEE802.3帧。

    6:以太网和互联网区别

     主要差别:

    以太网是一种局域网,只能连接附近的设备。

    因特网是广域网,我们可以通过因特网连接到美国去得到消息。


    两者都算是用来连接电脑的网络,但是两者的范围是不同的。以太网是局限在一定的距离之内的,我们可以有成千上百个以太网;但是因特网呢,是最大的广域网了,我们只有一个因特网,所以因特网又可以说是网络中的网络。

    因特网是一个超大的国际化的系统,它能够把世界上的各个地方的网络连接起来,私人的,公共的,学术的还是商业的网络或者政府的网络,都可以互相连接,共享资源。形象的来说,因特网就是我们在打开网页,发送邮件,在线听音乐看电影所用的网络,它包括了非常广泛的信息,现在的我们已经习以为常了。


    而以太网呢,基本上就是只允许本地的几台电脑互相连接。电脑之间相互传送消息是有一组技术支持的。一般来说,连接到以太网上的电脑都在同一栋楼里,或者在周围附近。但是随着以太网网线的发展,以太网的范围可以扩展到十公里了。但是因为都是用网线互联,要想连接到很远的地方是不现实的。

    生活化一点,以太网就是把你家的电脑,笔记本连接到猫上,然后再通过猫连接到因特网上去,这样你才能和国外的朋友Skype。因此,你家的电脑,笔记本和猫就组成了一个以太网。可以想象,世界上有成千上万个以太网。商业上应用以太网,将他们所有的电脑连接到主服务器上。
    以太网可以有一个或者几个管理员。因特网上可能有一些部分是由管理员的,但是没有一个可以操控整个因特网的管理员。
    另外一个区别就是安全性。以太网是比较安全的,因为他是一个封闭的内部网络,外部人员是没有权限的。但是因特网是公开连接的,每个人都可以浏览。

    7: ARP协议

    ARP协议建立了主机IP地址和MAC地址的映射关系。

    在网络通讯时,源主机的应⽤程序知道目的主机的IP地址和端⼝号,却不知道目的主机的硬件地址;数据包⾸先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃;因此在通讯前必须获得目的主机的硬件地址。

    ARP的功能是在32bit的IP地址和采用不同网络技术的硬件地址之间提供动态映射,为上层将底层的物理地址差异屏蔽起来,这样上层的因特网协议就可以灵活地使用IP地址进行通信了。ARP协议的基本功能是使用目标主机的IP地址,查询其对应的MAC地址,以保证底层链路上数据包通信的进行。为了实现在网络接口物理地址与IP地址间的转换,ARP协议中引入了ARP缓存表的概念。ARP缓存表中记录了一条一条的<IP地址,MAC地址>对,他们是主机最近运行获得的关于周围其他主机的IP地址到物理地址的绑定,当需要发送IP数据包时,ARP层根据目的IP地址来查找ARP缓存表,并将匹配的MAC地址装入以太网帧首部,最后发送以太网数据。

    ARP缓存表的建立与ARP数据包是密切相关的。在以太网中,ARP数据包和IP数据包是两个独立的部分,它们都封装在以太网帧中发送。ARP数据包的种类有两种:一是ARP请求包,它是通过以太网广播的方式发送的,用于向具有某个IP地址的主机发送请求,希望该主机返回其MAC地址;二是ARP应答包,收到ARP请求的主机会比对该数据包中的IP地址与自己的IP地址是否符合,若是,则该主机向源主机返回一个ARP应答包。向源主机报告自己的MAC地址。源主机通过提取ARP应答包中的相关字段来更新ARP缓存表。在Windows控制台上输入arp -a,可以查看操作系统中使用的ARP缓存表。

    举一个简单的例子来看看ARP的功能。假如我们的主机(192.168.1.11)需要向开发板(192.168.1.37)发送一个IP数据包,当发送数据时,主机会在自己的ARP缓存表中寻找是否有目标IP地址。如果找到了,也就知道了目标MAC地址为(04-02-35-00-00-01),此时,主机直接把目标MAC地址写入以太网首部发送就可以了;如果在ARP缓存表中没有找到相对应的IP地址,此时比较不幸,我们的数据需要被延迟发送,随后主机会先在网络上发送一个广播(ARP请求,以太网目的地址为FF-FF-FF-FF-FF-FF),广播的ARP请求表示同一网段内所有主机将会收到这样一条信息:“192.168.1.37的MAC地址是什么?请回答”。网络IP地址为192.168.1.37(开发板)的主机接收到这个帧后,它有义务做出这样的回答(ARP应答):“192.168.1.37的MAC地址是(04-02-35-00-00-01)”。这样,主机就知道了开发板的MAC地址,先前被延时的数据包就可以被发送了,此外,主机将这个地址对保存在缓存表中,以便后续数据包发送时使用。

    ARP协议的核心就是对ARP缓存表的操作。发送数据包时,查找缓存表以得到目的MAC地址,此外,ARP还需要不断地处理ARP请求包和ARP应答包,以保证缓存表中各个表项的有效性。ARP的实质就是对缓存表的建立、更新、查询等操作。

    在局域网中,以太bai网协议规定,数据包是从一块网卡传du送到另一块网卡zhi。而网卡地址就是数据包dao的发送地址和接收地址,也就是帧首部所包含的MAC地址,MAC地址是每块网卡的身份标识。
    假设有个网卡A需要向网卡B发送一个数据包,该数据包里就会写入网卡B的MAC地址,然后把这个数据包发送给子网中所有的主机,即广播发送。子网中所有的主机都会收到该数据包,而只有网卡B会保留该数据包,其他主机在核对MAC地址后发现不是发给自己的,就会丢弃该数据包。
    广播发送:每个数据包的发送都会发送给子网中的所有主机。

     

    8:以太网的单播,广播,组播

    单播

    单播 MAC 地址是帧从一台发送设备发送到一台目的设备时使用的唯一地址。

    例如,IP 地址为 192.168.1.5 的主机(源)向 IP 地址为 192.168.1.200 的服务器请求网页。要传送和接收单播数据包,目的 IP 地址必须包含于 IP 数据包头中。相应的目的 MAC 地址也必须出现于以太网帧帧头中。只有 IP 地址和 MAC 地址相结合,才能将数据传送到特定的目的主机。

    广播

    发送广播时,数据包以主机部分全部为一 (1) 的地址作为目的 IP 地址。这种地址计数法表示本地网络(广播域)中的所有主机都将接收和处理该数据包。许多网络协议,如动态主机配置协议 (DHCP) 和地址解析协议 (ARP) 等,都使用广播。关于 ARP 如何使用广播将第 2 层地址映射到第 3 层地址的内容,本章将稍后论述。

    网络的广播 IP 地址需要在以太网帧中包含相应的广播 MAC 地址。在以太网中,广播 MAC 地址长 48 位,全部为一,以十六进制显示时则为 FF-FF-FF-FF-FF-FF。 

    组播

    我们回顾一下,组播地址允许源设备向一组设备发送数据包。属于某一组播组的设备都被分配了该组播组 IP 地址。组播地址的范围为 224.0.0.0 到 239.255.255.255。由于组播地址代表一组地址(有时称为主机组),因此只能用作数据包的目的地址。源地址始终为单播地址。

    组播地址常用于远程游戏中,许多玩家远程连接同一个游戏并玩该游戏;通过视频会议远程学习也使用组播地址,许多学生连接到同一个课程。

    如同单播和广播地址一样,组播 IP 地址也需要相应的组播 MAC 地址才能在本地网络中实际传送帧。组播 MAC 地址是一个特殊的十六进制数值,以 01-00-5E 开头。然后将 IP 组播组地址的低 23 位换算成以太网地址中剩余的 6 个十六进制字符,作为组播 MAC 地址的结尾。MAC 地址剩余的位始终为 "0"。

    展开全文
  • 3.拼接符的作用是什么?为什么说合理使用拼接符可以提高程序可读性和可维护性?拼接符表示操作其具体物理意义是啥? 4.如果都不带时间延迟,阻塞非阻塞赋值有什么不同?举例说明它们不同点? 5.举例说明...
  • 它会返回一个三位数的状态码状态信息。状态码为了便于程序进行处理,而状态信息是为了让用户能清楚的明白意思。  状态码分类  HTTP状态码被分为五大类, 目前我们使用的HTTP协议版本是1.1, 支持以下的状态码...
  • Java方法基本知识

    2020-04-07 14:22:51
    Java方法基本知识 2020.4.6 课堂笔记 循环嵌套 for循环 嵌套:外层循环控制行数,内层循环控制列。 System.out.println();...作用:中断循环,用在switch循环语句,离开这两个场景,就没有意义。 也可...
  • 也认同使用中文编程的意义和必要性。 问题主要在于编程的形式。从根本上引入中文编程,对汉语使用者来说确实能提高某些情况下的开发效率,但就维护层面来看,未必能有明显改观,反而会形成...
  • 人工神经网络是人工构造模拟人脑功能而构建一种网络,它吸取了生物神经一些优点如高度并行性、非线性全局作用、良好容错性联想记忆功能,以及十分强自我适应自我学习能力。误差反向传播神经网络...

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 278
精华内容 111
关键字:

中位数的意义和作用