首页编程java编程ulp在 java 中什么意思?如何用java程序 求0.1的7次方

ulp在 java 中什么意思?如何用java程序 求0.1的7次方

编程之家2023-10-12102次浏览

大家好,今天小编来为大家解答以下的问题,关于ulp在 java 中什么意思,如何用java程序 求0.1的7次方这个很多人还不知道,现在让我们一起来看看吧!

ulp在 java 中什么意思?如何用java程序 求0.1的7次方

蓝牙耳机超低功率什么意思

蓝牙耳机功率

普通正常工作的智能手机上如果蓝牙仅仅开着什么事都不做,功率不应该超过10mW,甚至可以低至平均不到1mW。

蓝牙功率与软件高度相关,但正常工作的电路最大有效功率不超过1W,因为周边损耗很低所以实测多在1010-1025mW之间。

ulp在 java 中什么意思?如何用java程序 求0.1的7次方

这个参数来自Bluetooth2.0标准。之后的2.x、3.x、4.0都基本在这个范围内,但越来越少达到1W级别,即便是Class1设备。不过,由于3.0之后可以使用WiFi硬件进行数据传输,所以实际功率可能更大。

日常使用中,如果有持续工作的蓝牙设备,例如蓝牙耳机,平均功率一般在10-100mW级别,取决于具体设备。如果仅仅是蓝牙鼠标、键盘等设备,平均功率一般不到1mW,峰值功率100mW以内。

蓝牙4.0标准引入了LowEnergy模式,这个模式耗电量极低。但是,这个模式目前只有少数设备使用。

ulp在 java 中什么意思?如何用java程序 求0.1的7次方

传输功率

当蓝牙耳机正常工作如对手机正常通信时,所发射信号的发射功率。蓝牙耳机上的标识其实是用一个信号的强度来表示的,如CLASS24dBm,相当于1.49毫瓦。

传统蓝牙和低功耗蓝牙的区别

蓝牙4.0标准包含两个蓝牙标准,准确的说,是一个双模的标准,它包含传统蓝牙部分(也有称之为经典蓝牙ClassicBluetooth)和低功耗蓝牙部分(BluetoothLowEnergy)。这两个部分适用于不同的应用或者应用条件。传统蓝牙是在之前的1.0.1.2,2.0+EDR,2.1+EDR,3.0+EDR等基础上发展和完善起来的,低功耗蓝牙是Nokia的Wibree标准上发展起来的。

传统蓝牙可以用与数据量比较大的传输,如语音,音乐,较高数据量传输等,低功耗蓝牙这样应用于实时性要求比较高,但是数据速率比较低的产品,如遥控类的,如鼠标,键盘,遥控鼠标(AirMouse),传感设备的数据发送,如心跳带,血压计,温度传感器等。传统蓝牙有3个功率级别,Class1,Class2,Class3,分别支持100m,10m,1m的传输距离,而低功耗蓝牙无功率级别,一般发送功率在7dBm,一般在空旷距离,达到20m应该是没有问题的。

所以蓝牙4.0是集成了传统蓝牙和低功耗蓝牙两个标准的,并不只是低功耗蓝牙。

蓝牙4.0是蓝牙3.0+HS规范的补充,专门面向对成本和功耗都有较高要求的无线方案,较3.0版本更省电、低成本和跨厂商互操作性、3毫秒低延迟、超长有效连接距离、AES-128加密等;蓝牙4.0可广泛用于卫生保健、体育健身、家庭娱乐、安全保障等诸多领域。通常用在蓝牙耳机、蓝牙音箱、计步器、心律监视器、智能仪表、传感器物联网等设备上,大大扩展蓝牙技术的应用范围。该技术拥有极低的运行和待机功耗,使用一粒纽扣电池甚至可连续工作数年之久。

蓝牙4.0支持两种部署方式:双模式和单模式。

双模式中低功耗蓝牙功能集成在现有的经典蓝牙控制器中,或再在现有经典蓝牙技术(2.1+EDR/3.0+HS)芯片上增加低功耗堆栈,整体架构基本不变,因此成本增加有限。

单模式面向高度集成、紧凑的设备,使用一个轻量级连接层(LinkLayer)提供超低功耗的待机模式操作、简单设备恢复和可靠的点对多点数据传输,还能让联网传感器在蓝牙传输中安排好低功耗蓝牙流量的次序,同时还有高级节能和安全加密连接。超低的峰值、平均和待机模式功耗。

_速度:支持1Mbps数据传输率下的超短数据包,最少8个八组位,最多27个。所有连接都使用蓝牙2.1加入的减速呼吸模式(sniffsubrating)来达到超低工作循环。

_跳频:使用所有蓝牙规范版本通用的自适应跳频,最大程度地减少和其他2.4GHzISM频段无线技术的串扰。

_主控制:更加智能,可以休眠更长时间,只在需要执行动作的时候才唤醒。

_延迟:最短可在3毫秒内完成连接设置并开始传输数据。

_范围:提高调制指数,最大范围可超过100米(根据不同应用领域,距离不同)。

_健壮性:所有数据包都使用24-bitCRC校验,确保最大程度抵御干扰。

_安全:使用AES-128CCM加密算法进行数据包加密和认证。

_拓扑:每个数据包的每次接收都使用32位寻址,理论上可连接数十亿设备;针对一对一连接优化,并支持星形拓扑的一对多连接;使用快速连接和断开,数据可以再网状拓扑内转移而无需维持复杂的网状网络。

BLE是蓝牙低能耗的简称(BluetoohLowEnergy)。蓝牙低能耗(BLE)技术是低成本、短距离、可互操作的鲁棒性无线技术,工作在免许可的2.4GHzISM射频频段。它从一开始就设计为超低功耗(ULP)无线技术。它利用许多智能手段最大限度地降低功耗。

蓝牙低能耗架构共有两种芯片构成:单模芯片和双模芯片。蓝牙单模芯片可以和其它单模芯片及双模芯片通信,此时后者需要使用自身架构中的蓝牙低能耗技术部分进行收发数据。双模芯片也能与标准蓝牙技术及使用传统蓝牙架构的其它双模芯片通信。

双模芯片可以在目前使用标准蓝牙芯片的任何场合使用。这样安装有双模芯片的手机、PC、个人导航设备(PND)或其它应用就可以和市场上已经在用的所有传统标准蓝牙设备以及所有未来的蓝牙低能耗设备通信。然而,由于这些设备要求执行标准蓝牙和蓝牙低能耗任务,因此双模芯片针对ULP操作的优化程度没有像单模芯片那么高。

单模芯片可以用单节钮扣电池(如3V、220mAh的CR2032)工作很长时间(几个月甚至几年)。相反,标准蓝牙技术(和蓝牙低能耗双模器件)通常要求使用至少两节AAA电池(电量是钮扣电池的10至12倍,可以容忍高得多的峰值电流),并且更多情况下最多只能工作几天或几周的时间(取决于具体应用)。注意,也有一些高度专业化的标准蓝牙设备,它们可以使用容量比AAA电池低的电池工作。

经典蓝牙和低功耗蓝牙区别

Android中的蓝牙

_档_ndroid中的蓝牙,大家听到的可能有蓝牙1.0、蓝牙2.0、蓝牙3.0、蓝牙4.0之类的以数字结尾的蓝牙版本号,而实际上,在最新的标准中,已经不再使用数字版本号作为蓝牙版本的区分了,取而代之的是经典蓝牙与低功耗蓝牙(BLE)这两种区别。

__饫锾岬降牡凸_睦堆酪不嵊泻芏嗳嘶嵛蠼馕褪抢堆4.0,但是完整的蓝牙4.0规范中实际上包括有经典蓝牙和低功耗蓝牙这两个部分,大家看看如下这张分类表就能够明白这其中的关系了。

如表中所述,现在的蓝牙实际上分为了三类:单模、双模和经典。那么,最官方的蓝牙版本称呼就是,单模蓝牙、双模蓝牙和经典蓝牙。

_在这其中,最前沿的当属单模蓝牙了,也就是低功耗蓝牙。这个蓝牙标准和经典蓝牙区别极大,在最初甚至考虑过加入WIFI阵营,但是因为蓝牙阵营这边条件较为优厚(比如授权费用极低)才并入了蓝牙标准。

那么,低功耗蓝牙和经典蓝牙的区别究竟在哪里呢?

_要是仅仅从两者的通信方式上来说,可以说除了名字叫蓝牙外,完全可以当做两个东西。不过,两者在总体上的流程却也是相似的,那就是:

发现设备-配对/绑定设备-建立连接-数据通信

经典蓝牙和低功耗蓝牙除了配对/绑定这个环节是一样的之外,其它三个环节都是不同的。

1.发现设备

经典蓝牙:经典蓝牙设备发现其它经典蓝牙设备的方式是调用BluetoothAdapter的startDiscovery()方法。

api上说的比较模糊,大致是说只能够发现经典蓝牙设备。

请点击输入图片描述

然而实验发现BluetoothAdapter.startDiscovery是可以同时发现经典蓝牙和ble的

低功耗蓝牙:低功耗蓝牙中则有一个主设备(Central)和从设备(Peripheral,也叫外围设备)的概念。主设备作为发现方,调用发现设备的方法,通过BluetoothAdapter的startLeScan()方法实现。从设备则作为被发现方,发出广播,以供发现。同样,这个startLeScan()方法也仅能够发现低功耗蓝牙从设备。

总结:BluetoothAdapter.startDiscovery在大多数手机上是可以同时发现经典蓝牙和Ble的,但是startDiscovery的回调无法返回Ble的广播,所以无法通过广播识别设备,且startDiscovery扫描Ble的效率比StartLeScan低很多。所以在实际应用中,还是StartDiscovery和StartLeScan分开扫,前者扫传统蓝牙,后者扫低功耗蓝牙。

注意:当两种蓝牙设备被某设备(包括当前的设备)配对/绑定后,可能不会再被扫描到。

2.配对/绑定

有很多小伙伴都不太理解配对和绑定究竟有什么区别,或者它们根本就是同一个东西。好吧,严格说配对和绑定是有区别的,也就是不是指的同一件事情。但是这两者的区别比较模糊,也不好解释。目前JACK的机器人的理解是,配对是建立两者的对应关系,而绑定则把这层关系保存固定下来并进行了强化,暂时这么理解着吧。

不管是经典蓝牙还是低功耗蓝牙,绑定方法都是通用的,可以调用相同的绑定方法。

3.建立连接

在建立连接的方式上,两者就千差万别了。

——蓝牙小知识——

在蓝牙设备中,存在着物理地址,我们也叫作蓝牙的MAC地址,这个地址是唯一的,就像咱们网络上的IP地址。同时还存在着一个叫做UUID的东西,可以把它理解为是IP地址中的端口号。正如知道了IP地址和端口号,就知道了怎么链接到目标网络服务器位置,知道了蓝牙设备的MAC地址和UUID也就能够确定到具体是哪一台蓝牙设备了,这两者合起来就是蓝牙的唯一身份标识。

经典蓝牙:经典蓝牙建立连接的方式实际上就是Socket的连接的建立。只不过这里不是直接用Socket,而是BluetoothSocket。获取BluetoothSocket的方式也很简单,利用搜索找到的BluetoothDevice,调用其方法createRfcommSocketToServiceRecord(UUID)。最后,使用获取到的BluetoothDevice调用其方法connect()就建立了经典蓝牙设备之间的连接通道。

低功耗蓝牙:低功耗蓝牙则用了一种看起来比较怪异的方式建立连接。

——关于BLE的一些基本概念——

GenericAttributeProfile(GATT)

通过BLE连接,读写属性类小数据的Profile通用规范。现在所有的BLE应用Profile都是基于GATT的。

AttributeProtocol(ATT)

GATT是基于ATTProtocol的。ATT针对BLE设备做了专门的优化,具体就是在传输过程中使用尽量少的数据。每个属性都有一个唯一的UUID,属性将以characteristicsandservices的形式传输。

Characteristic

Characteristic可以理解为一个数据类型,它包括一个value和0至多个对次value的描述(Descriptor)。

Descriptor

对Characteristic的描述,例如范围、计量单位等。

Service

Characteristic的集合。例如一个service叫做“HeartRateMonitor”,它可能包含多个Characteristics,其中可能包含一个叫做“heartratemeasurement”的Characteristic。

这里举个例子,例如现在需要使用一个智能手机作为主设备去连接一个作为从设备的智能手环,那么,此时这个作为主设备的智能手机连接过程中实际是一个客户端(Client),而作为从设备的智能手环在此过程中则是服务端(Server)。这里的主设备和从设备,客户端和服务端一定要区分清楚。

想要和一台BLE从设备建立连接,一般是某个智能设备,例如智能手环、智能灯泡之类的。如果使用智能手机作为测试平台,其硬件条件是,蓝牙得至少是低功耗蓝牙版本,然后安卓系统的话,至少得是Android4.3以上系统才行,因为Google在Android4.3以上才做了BLE主设备的支持,如果想将智能手机作为BLE从设备,则必须在Android5.0以上才行。

具体建立GATT连接的顺序则是,首先通过BluetoothAdapter的getRemoteDevice(address)方法获取大相应BLE从设备的BluetoothDevice,其中的address为目标蓝牙设备MAC地址。然后通过此BluetoothDevice的connectGatt(this,false,mGattCallback)方法获取设备连接。

此时的连接,只能够进行监听,也就是获取到当前BLE从设备广播出来的数据。

4.数据通信

经典蓝牙:当建立连接后,就可以直接使用BluetoothSocket的getOutputStream()方法获取输出流写入需要发送的数据。读取发送回来的数据,则是调用BluetoothSocket的getInputStream()方法获取输入流读取。这点和Java中的Socket通信几乎是一模一样。

低功耗蓝牙:想要实现主设备对从设备的数据发送,则需要直接读取获取到的从设备的Characteristic,而Characteristic又是Service下面的一层,所以操作顺序是:

(1)通过BLE从设备相应的Service_UUID获取对应的BluetoothGattService,获取方法是:使用BluetoothDevice的connectGatt(this,false,mGattCallback)方法返回的BluetoothGatt对象,调用BluetoothGatt的方法getService(Service_UUID)获取相应的BluetoothGattService;

(2)调用BluetoothGattService和对应的Characteristic的写入UUID获取相应的BluetoothGattCharacteristic,获取方法是:调用BluetoothGattService的getCharacteristic(Characteristic_UUID)方法获得;

(3)设置需要发送的命令值,调用BluetoothGattCharacteristic的方法setValue(value)进行设置,其中value一般为byte[];

(4)最后,使用BluetoothGatt的写入方法writeCharacteristic(TxChar)完成命令发送。

可以看到,想要实现BLE的数据通信,步骤相当繁琐,这里只是做一个简单的概念理解,如果想要获取到BLE从设备的返回值,还需要设置Notification,然后调用BluetoothGatt的readCharacteristic(characteristic)方法进行数据的读取,这里不做详细说明了,放在以后详细说明BLE通信的时候再做解释。

蓝牙的选用

既然有经典蓝牙和低功耗蓝牙之分,我们在设计物联网产品和智能硬件产品的时候,如何选择呢?

经典蓝牙:蓝牙最初的设计意图,是打电话放音乐。3.0版本以下的蓝牙,都称为“经典蓝牙”。功耗高、传输数据量大、传输距离只有10米。

低功耗蓝牙:就是BLE,通常说的蓝牙4.0(及以上版本)。低功耗,数据量小,距离50米左右。

传声音的,用经典蓝牙:

如蓝牙耳机、蓝牙音箱。蓝牙设计的时候就是为了传声音的,所以是近距离的音频传输的不二选择。

电池供电、连手机APP的,用BLE:

如共享单车锁、蓝牙智能锁、蓝牙防丢器、蓝牙室内定位,是目前手机和智能硬件通信的性价比最高的手段。直线距离约50米,一节5号电池能用一年,传输模组成本10块钱,远比WIFI、4G等大数据量的通信协议更实用。

又要声音又要数据的,用双模蓝牙:__@堆溃褪峭敝С志淅堆酪羝岛偷凸_睦堆馈

如智能电视遥控器、降噪耳机等。很多智能电视配的遥控器带有语音识别,需要用经典蓝牙才能传输声音

传大数据量的,用经典蓝牙:__缒承┕た爻【埃褂_ndroid或Linux主控,外挂蓝牙遥控设备的,可以使用经典蓝牙里的SPP协议,当作一个无线串口使用。速度比BLE传输快多了。

远距离的,不用蓝牙。__潭ü┑绲摹⒉豢悸枪_牡摹⒁甘拙嗬氲摹⒁咚偈莸模庑┒疾皇屎侠堆馈T毒嗬氲目梢杂2G、4G、NB-IOT,大数据量的可以用WIFI。

jbl蓝牙耳机-le是什么意思

蓝牙耳机LE是LowEnergy(低功耗)的缩写,如果看字面上的意思会觉得这个新标准好像是以省电为目的而开发的,不过未来它可能对应的产品和使用环境是非常丰富的,除了常见的无线耳机外,它还具有为各种音频相关设备(例如助听器、视频会议、口译接收器、对讲机等)带来创新的潜力。伴随BluetoothSIG宣布推出的蓝牙5.2规范,包含其中的LEAudio也将开启全新的音频创新应用。

如何用java程序 求0.1的7次方

在Math类中pow的声明:

public static double pow(double a, double b)

参数:

a-底数。

b-指数。

返回:

值 a的b次幂

求0.1的7次方

Math.pow(0.1,7);

注意7如果是int的,会自运转为double型的,返回结果为double型的.

你写的没有错,其实这样Math.pow(d1, d2)是最好的输写方法,最好不要直接将数做为参数传给方法,不然后期的维就费劲了.

不还注意一些小点,类名的第一个字母最好为大写的.而且是能够表达这个类的意思的,功能的.

返回第一个参数的第二个参数次幂的值。特殊情况是:

如果第二个参数是正零或负零,那么结果是 1.0。

如果第二个参数是 1.0,那么结果与第一个参数相同。

如果第二个参数是 NaN,那么结果是 NaN。

如果第一个参数是 NaN,第二个参数是非零,那么结果是 NaN。

如果

第一个参数的绝对值大于 1,并且第二个参数是正无穷大,或者

第一个参数的绝对值小于 1,并且第二个参数是负无穷大,

那么结果是正无穷大。

如果

第一个参数的绝对值大于 1,并且第二个参数是负无穷大,或者

第一个参数的绝对值小于 1,并且第二个参数是正无穷大,

那么结果是正零。

如果第一个参数的绝对值等于1,并且第二个参数是无穷大,那么结果是 NaN。

如果

第一个参数是正零,并且第二个参数大于零,或者

第一个参数是正无穷大,并且第二个参数小于零,

那么结果是正零。

如果

第一个参数是正零,并且第二个参数小于零,或者

第一个参数是正无穷大,并且第二个参数大于零,

那么结果是正无穷大。

如果

如果第一个参数是负零,并且第二个参数大于零但不是有限的奇数整数,或者

第一个参数是负无穷大,并且第二个参数小于零但不是有限的奇数整数,

那么结果是正零。

如果

第一个参数是负零,并且第二个参数是正的有限奇数整数,或者

第一个参数是负无穷大,并且第二个参数是负的有限奇数整数,

那么结果是负零。

如果

如果第一个参数是负零,并且第二个参数小于零但不是有限的奇数整数,或者

第一个参数是负无穷大,并且第二个参数大于零但不是有限的奇数整数,

那么结果是正无穷大。

如果

第一个参数是负零,并且第二个参数是负的有限奇数整数,或者

第一个参数是负无穷大,并且第二个参数是正的有限奇数整数,

那么结果是负无穷大。

如果第一个参数是小于零的有限值,

并且第二个参数是有限的偶数整数,那么结果等于第一个参数的绝对值的第二个参数次幂的结果。

如果第二个参数是有限的奇数整数,那么结果等于第一个参数绝对值的第二个参数次幂的结果的负数。

如果第二个参数是有限的非整数值,那么结果是 NaN。

如果两个参数都是整数,并且结果可以表示为 double值,那么该结果恰好等于第一个参数的第二个参数次幂的算术结果。

(在前面的描述中,当且仅当浮点数为有限值并且是方法 ceil的定点数,或者是方法 floor的定点数时,才可以认为浮点值是整数。当且仅当将方法应用到该值的结果等于该值时,该值才是带有一个参数的某个方法的定点值。)

计算结果必须在准确结果的 1 ulp范围内。结果必须具有半单调性。

关于ulp在 java 中什么意思到此分享完毕,希望能帮助到您。

梦幻西游彩虹争霸 梦幻西游彩虹争霸赛几点开始java %3c%3c什么意思 在c语言中%3c 是什么意思