数据的存储(原反补码/大小端存储/截断溢出/隐式类型转换/浮点数存储)

news2026/3/13 18:48:17
目录原码、反码、补码大端存储和小端存储截断溢出隐式类型转换整形提升数据的输出浮点数在内存中的存储原码、反码、补码计算机中的有符号整数有三种二进制表示方法 , 即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用 0 表示 “正” , 用 1 表示 “负”无符号的数据类型的原码、反码、补码是相同的有符号的数据类型的反码、补码要经过原码转换得到原码按照一个数的正负, 直接写出它的二进制表示形式得到的就是原码反码反码是原码的符号位不变, 其他位按位取反补码补码是反码1例整型占4个字节 (32bit)如 10 的00000000000000000000000000001010 - 原码00000000000000000000000000001010 - 反码00000000000000000000000000001010 - 补码-10 的10000000000000000000000000001010 - 原码111111111111111111111111111111110101 - 反码111111111111111111111111111111110110 - 补码原码、反码、补码的互相转化取反符号位不变, 其他位按位取反减去一不好得出结果时也可以取反1在计算机中为什么要用用补码存储一个数呢在计算机系统中 , 数值一律用补码来表示和存储。原因在于,使用补码 , 可以将符号位和数值域统一处理 ; 同时 , 加法和减法也可以统一处理(CPU只有加法器)此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。一个简单的例子如果计算机用原码存储一个数00000000 00000000 00000000 00000001 - 1 的原码10000000 00000000 00000000 00000001 - 负1的原码我们计算 1 - 1 也就是 1 -110000000 00000000 00000000 00000010 - 结果是 -2 这就出现问题了结果显然不对。那如果我们使用补码呢00000000 00000000 00000000 00000001 - 1 的补码11111111 11111111 11111111 11111111 - 负1的补码现在用 1 的补码和 -1 的补码相加1 00000000 00000000 00000000 00000000由于整形占 4 个字节所以最高位的那个 1 会溢出后被截断最终的结果是00000000 00000000​​​​​​ 00000000 00000000这样结果就正确了所以计算机要用补码存储一个数并且用补码计算。大端存储和小端存储大端字节序存储是指数据的低位保存在内存的高地址中 , 而数据的高位保存在内存的低地址中;小端字节序存储是指数据的低位保存在内存的低地址中 , 而数据的高位保存在内存的高地址中。例如对于十六进制数 0x 11 22 33 44调试并查看内存更多调试功能想出大小端字节序存储的灵感《格列佛游记》中的一个故事被用来类比计算机科学中的大小端字节序存储问题。在小说中小人国的臣民为水煮蛋应该从大的一端Big-End剥开还是小的一端Little-End剥开而争论不休。这个故事被英国计算机科学家丹尼·科恩Danny Cohen引用用来类比数据在内存中的存放序列字节序的问题。这导致了“大端Big-Endian”和“小端Little-Endian”字节序的概念的提出。为什么会有大小端模式之分呢?这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为 8 bit。但是在C语言中除了 8 bit 的 char 之外,还有 16 bit 的 short 型,32 bit 的 long 型(要看具体的编译器),另外,对于位数大于 8 位的处理器,例如 16 位或者 32 位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如何将多个字节安排的问题。因此就产生了大端存储模式和小端存储模式。检查当前机器是大端存储还是小端存储的函数int check_sys() { int a 1; return *(char*)a; }将数据从内存中取出时要复原数据两个头文件整形类数据int 、long、long、的取值范围可以在limits.h这个头文件里查阅// // limits.h // // Copyright (c) Microsoft Corporation. All rights reserved. // // The C Standard Library limits.h header. // #pragma once #define _INC_LIMITS #include vcruntime.h #pragma warning(push) #pragma warning(disable: _VCRUNTIME_DISABLED_WARNINGS) _CRT_BEGIN_C_HEADER #define CHAR_BIT 8 #define SCHAR_MIN (-128) #define SCHAR_MAX 127 #define UCHAR_MAX 0xff #ifndef _CHAR_UNSIGNED #define CHAR_MIN SCHAR_MIN #define CHAR_MAX SCHAR_MAX #else #define CHAR_MIN 0 #define CHAR_MAX UCHAR_MAX #endif #define MB_LEN_MAX 5 #define SHRT_MIN (-32768) #define SHRT_MAX 32767 #define USHRT_MAX 0xffff #define INT_MIN (-2147483647 - 1) #define INT_MAX 2147483647 #define UINT_MAX 0xffffffff #define LONG_MIN (-2147483647L - 1) #define LONG_MAX 2147483647L #define ULONG_MAX 0xffffffffUL #define LLONG_MAX 9223372036854775807i64 #define LLONG_MIN (-9223372036854775807i64 - 1) #define ULLONG_MAX 0xffffffffffffffffui64 #define _I8_MIN (-127i8 - 1) #define _I8_MAX 127i8 #define _UI8_MAX 0xffui8 #define _I16_MIN (-32767i16 - 1) #define _I16_MAX 32767i16 #define _UI16_MAX 0xffffui16 #define _I32_MIN (-2147483647i32 - 1) #define _I32_MAX 2147483647i32 #define _UI32_MAX 0xffffffffui32 #define _I64_MIN (-9223372036854775807i64 - 1) #define _I64_MAX 9223372036854775807i64 #define _UI64_MAX 0xffffffffffffffffui64 #ifndef SIZE_MAX // SIZE_MAX definition must match exactly with stdint.h for modules support. #ifdef _WIN64 #define SIZE_MAX 0xffffffffffffffffui64 #else #define SIZE_MAX 0xffffffffui32 #endif #endif #ifndef RSIZE_MAX #define RSIZE_MAX (SIZE_MAX 1) #endif _CRT_END_C_HEADER #pragma warning(pop) // _VCRUNTIME_DISABLED_WARNINGS浮点型数据的取值范围可以在float.h这个头文件里查阅截断截断通常指的是将一个数据类型的值赋给另一个数据类型时由于目标类型的表示范围小于源类型导致数据的部分信息丢失的现象。这种情况通常发生在将一个较大的数据类型转换为一个较小的数据类型时。例如将一个 int 类型的值赋给一个 char 类型的变量时由于 int 通常是 32 位而 char 通常是 8位因此 int 类型的值的高 24 位将被截断只保留低 8 位的值。这可能会导致数据的精度丢失。下面是一个简单的例子int main() { char a -1; // -1s是整数在内存中以32位二进制补码形式存储11111111 11111111 11111111 11111111 // 由于a是char类型只能存储8位二进制所以将-1存储到a时要发生截断存放到a中的数实际上是11111111 return 0; }溢出在C语言中,溢出是指当一个变量的值超出了其数据类型所能表示的范围时发生的情况。C语言中的整数类型(如int、short、long等)都有固定的范围,这些范围由编译器和平台决定,但通常是基于标准的(如ISO C标准)”。溢出的类型● 无符号整型溢出:对于unsigned整型溢出,C的规范是有定义的 -- “溢出后的数会以2^(8 *sizeof(type))作模运算”。例如unsigned char (1字节,8 bits)溢出了,会把溢出的值与2 56求模”。● 符号整型溢出:对于signed char,正整数最大值为127,负整数最小值为-128,十进制转二进制运算时直接将高于八位的数字直接舍弃。由于整数运算在计算机内部都是通过补码进行处理,因此需要将十进制整型转换为二进制补码进行运算(正数的原码补码相同,负数原码取反(符号位不动),加一得到补码)。运算完成得到的是补码,有以下两种情况:”● 如果第八位(符号位)为0,得到的是一个正数,则舍去溢出的高位,直接将二进制转换十进制即可 ”。● 如果第八位(符号位)为1,说明得到的是一个负数,则舍去溢出的高位,将此补码转换成原码(逆运算,减一再取反)”。溢出的影响整数溢出可能导致不可预测的结果。在某些情况下,程序可能会崩溃或产生错误的输出。在一些安全关键的系统中,整数溢出可能导致严重的安全漏洞”。处理溢出的方法● 选择合适的数据类型:在进行编程时,根据可能出现的数值范围,选择足够大的整数类型来避免溢出。例如,如果预计数值可能会很大,优先考虑使用long long类型”。● 使用条件判断检测溢出:在进行运算之前,可以先判断运算是否会导致溢出。例如,在进行加法运算之前,可以先判断是否会发生溢出,如果会发生溢出,则返回 -1 并打印提示信息”。● 使用库函数:一些标准库提供了处理整数运算的函数,可以检测和处理溢出。例如,在 stdint.h头文件中,提供了一些固定宽度的整数类型(如int16_t、int32_t等)以及相应的运算函数”。● 使用大数运算库:如果需要处理非常大的数字,可以考虑使用大数运算库,如GNU MP库、BigInt库等。这些库提供了高精度的数值计算功能,可以处理超出常规数据类型表示范围的数据”。隐式类型转换整形提升C的整型算术运算总是至少以缺省默认整型类型的精度来进行的。为了获得这个精度,表达式中的字符1个字节和短整型两个字节操作数在使用之前被转换为普通整型int, 这种转换称为整型提升。整型提升的意义:表达式的整型运算要在CPU的相应运算器件内执行,CPU内整型运算器(ALU)的操作数的字节长度一般就是int的字节长度,同时也是CPU的通用寄存器的长度。因此,即使两个char类型的相加,在CPU执行时实际上也要先转换为CPU内整型操作数的标准长度。通用CPU(general-purpose CPU)是难以直接实现两个8比特字节直接相加运算(虽然机器指令中可能有这种字节相加指令)。所以,表达式中各种长度可能小于int长度的整型值,都必须先转换为int或unsigned int,然后才能送入CPU去执行运算。例如char a 1;char b 2;char c a b;a 和 b 的值被提升为整形然后再执行加法运算。加法运算完成之后结果将被截断然后存储于 c 中。如何进行整形提升整形提升是按照变量的数据类型的符号位来提升的有符号的数据类型整形提升时在补码的左边补充符号位的数是0就补0是1就补1无符号的数据类型整形提升时在补码的左边补充0是0是1都补0补充到 32 位四字节。以 char 为例char c1 - 1;假设现在 c1 要发生整形提升了变量c1的二进制位(补码)中只有8个比特位:11111111因为 char 为有符号的 char 所以整形提升的时候 , 高位补充符号位 , 即为1提升之后的结果是:11111111111111111111111111111111char c2 1;变量c2的二进制位(补码)中只有8个比特位:00000001因为 char 为有符号的 char 所以整形提升的时候 , 高位补充符号位 , 即为0提升之后的结果是:00000000000000000000000000000001//无符号整形提升,高位补0分析以下代码计算过程char a 3 3 的原码00000000000000000000000000000011由于 char 类型只占 1 个字节所以将 3 存储到 a 时要发生截断因此a 的补码00000011内存中以补码形式存储char b 127;b 的补码01111111char c a b要先对 a、b 进行整形提升a 整形提升后00000000000000000000000000000011b 整形提升后00000000000000000000000001111111a b 00000000000000000000000010000010截断后存储到 c c 的补码10000010最高位是 1 c 已经是负数了printf(%d, c);%d 是以有符号十进制整数形式打印二进制原码所以要将 c 进行整形提升再找到 c 的原码。c 进行整形提升11111111111111111111111110000010取反1得到原码100000000000000000000001111110 这是 -126 的原码所以打印的是 -126 。有符号的 char 类型signed char的取值范围是 -128 到 127 如何得来的signed char 类型占 1 个字节即 8 bit 1 个 bit 有 0 或者 1 两种可能8 个 bit 可以有 2 的 8 次方即 256 种组合可以表示十进制的0 到 257但最高位为符号位即表示数值实际有 7 个 bit 位128 种组合当最高位为 0 表示正数时可以表示十进制的 0 到 127 当最高位为 1 表示负数时可以表示十进制的 -12810000000 规定为 -128 到 -1 11111111所以有符号的 char 类型signed char的取值范围是 -128 到 127 。其他类型如 int 类型可以依此类推。对于 unsigned char 无符号字符型最高位不再表示符号此时 8 个 bit 位都表示数值所以 unsigned char 的取值范围是 0 到 255 其他类型如 unsigned int 类型也可以依此类推。char a 127a01111111此时对 a 加一a 110000000这个二进制数规定为 -128a 的值为 -128再对 a 加一a 210000001-127a 的值为 -127一直对 a 加一a 的值会从 -127 到 -126 ... 一直到 -111111111再加一1000000001溢出a 的值变为00000000即0a 的值变为 0。所以说对一个 char 类型的数无休止的加一这个数不会一直增加它的值呈现为在一定范围内周期性的变化。从 1 数到 100 个位总是在 0-9 循环变化请分析以下代码最后输出了 255 就是因为上文介绍的规律strlen 碰到数字 0 停下请分析以下代码最后只打印出了 c 请思考为什么tip0xb6 表示十六进制数字 b6 二进制形式为10110110十六进制数字每一位占半个个字节 运算有时也要整形提升 下面这个例子也说明了整形提升的存在 “”也是操作符对 c 要整形提升数据的输出%d - 以有符号十进制整数形式输出二进制原码printf“%d”a首先判断 a 的数据类型是不是 4 个字节的32位不满 32 位对 a 按照整形提升的规则有符号的数据类型整形提升时补码的高位补充符号位的数无符号的数据类型整形提升时补码的高位补充0补充到 32 位四字节进行整形提升。整形提升后再看 a 是有符号的还是无符号的。如果是有符号的算出 a 的原码整形提升后的二进制数是补码正数的原码就是补码负数的原码是补码取反加 1 算出的原码再看它的最高位如果是 1 就会输出负数如果是 0 就会输出正数。输出的具体数值就要看算出的原码的数值位后 31 位。如果是无符号的最高位不再表示符号位直接输出算出的原码的表示的十进制数值比 32 位多将最左边多于 32 位的 bit 位截断作为要输出的数的补码之后的过程与上述进行整形提升后相同。其他输出格式控制符如 %u、%ld、%lld 可与上述类比。%f 的读取方式见下文。浮点数在内存中的存储引例从这个例子可以看出用整数的方式存储一个数但用浮点数的方式输出一个数或者用浮点数的方式存储一个数但用整数的方式输出一个数得到的结果往往与预期不同。浮点数存储规则num 和 *pFloat 在内存中明明是同一个数 , 为什么浮点数和整数的解读结果会差别这么大?要理解这个结果,一定要搞懂浮点数在计算机内部的表示方法。详细解读:根据国际标准IEEE(电气和电子工程协会) 754 , 任意一个二进制浮点数 V 可以表示成下面的形式:(-1)^S * M * 2^E-1)^S 表示 -1 的 S 次方● (-1) ^ S 表示符号位 , 当 S 0 , V 为正数当 S 1 V 为负数;● M 表示有效数字 , 大于等于1 , 小于2。● 2^E 表示指数位。例子v 5.5十进制 101.1 二进制小数点后的1表示 2^(-1)即十进制 0.5 1.011 * 2^2 -1^ 0 * 1.011 * 2^2 S 0M 1.011E 2每一个浮点数都唯一对应一对 S、M 和 E因此要存储一个浮点数只要存储它的 S、M 和 E。IEEE 754 规定:对于 32 位的浮点数 , 最高的 1 位是符号位 S , 接着的 8 位是指数 E , 剩下的 23 位为有效数字 M。而对于 64 位的浮点数S占1bitE占11bitM占52bit。S、M 和 E 怎么存储到内存里去S 0二进制是正数S 1二进制是负数。IEEE 754 对有效数字 M 和指数 E , 还有一些特别规定。前面说过 , 1M2 , 也就是说 , M 可以写成 1.xxxxxx 的形式 , 其中 xxxxxx 表示小数部分。IEEE 754 规定 , 在计算机内部保存 M 时 , 默认这个数的第一位总是 1 , 因此可以被舍去 , 只保存后面的 xxxxxx 部分。比如保存 1.01 的时候 , 只保存 01 , 等到读取的时候 , 再把第一位的 1 加上去。这样做的目的 , 是节省1位有效数字 。以32位浮点数为例 , 留给M只有23位 , 将第一位的1舍去以后 , 等于可以保存24位有效数字。至于指数E,情况就比较复杂。首先,E为一个无符号整数(unsigned int)这意味着,如果 E 为 8 位 , 它的取值范围为 0~255 ; 如果 E 为 11 位 , 它的取值范围为 0~2047。但是 , 我们知道 , 科学计数法中的 E 是可以出现负数的 , 所以 IEEE 754 规定 , 存入内存时 E 的真实值必须再加上一个中间数 , 对于8位的 E , 这个中间数是 127 ; 对于 11 位的 E , 这个中间数是1023。比如 , 2^10 的 E 是10 , 所以保存成 32 位浮点数时 , E必须保存成 10127137, 即10001001 , 再放入 E 的存储单元 等到要用到这个浮点数时 把 E 取出来时再减去这个中间数就行。比如:0.5 的二进制形式为 0.1 , 由于规定 M 部分必须为 1.xxxxxxx 这样的形式 , 现将小数点右移 1 位 , 则为 1.0 * 2 ^ (-1) 而 1.0 去掉 1 后为 0 , 在 0 的右边补齐 0 到 23 位 00000000000000000000000, 其中 E -1 加上 127 后为 126 , 二进制表示为 01111110 , 则 0.5 在内存中表示形式为:00111111000000000000000000000000转化为十六进制表示为0x 3F 00 00 00在内存中验证E 、M 怎么从内存中取出指数E从内存中取出可以分成三种情况:E不全为 0 或不全为 1这时取出 E 、M时指数E的计算值减去 127 (或1023) , 得到真实值 , 再将有效数字 M 前加上第一位的1。E全为0这时 , 浮点数的指数 E 直接认为等于 -126 (或者 -1023)这是一个非常非常小的数字有效数字 M 不再加上第一位的 1 , 而是还原为 0.xxxxxx 的小数。这样做是为了表示这是一个接近于0的很小的数字。E全为1这时 , 如果有效数字 M 全为 0 , 表示 ± 无穷大 (正负取决于符号位 S );%f格式控制符假设定义了单精度浮点数 a float a 0.5现在用printf“%f”a打印 a00111111000000000000000000000000- a 在内存中的表示%f 首先读取最左边的0即 S 0是正数再读取0111111001111110 是十进制 126减去127 后等于 -1即 E -1然后读取00000000000000000000000在它前面加上 1 就是 1.00000000000000000000000即为 M所以 %f 读取到的二进制数字就是-1^ 0 * 1.00000000000000000000000 * 2 ^ (-1) , 即二进制 0.1转化为十进制就是 0.5了如果 %f 读取的是整形类数据int a 21printf“%f”a则也按照上述的读取规律读取这就可能产生错误所以打印一个数据要用相应的格式控制符。相似的如果用 %d 读取一个单精度浮点数如float a 0.5printf“%d”a根据 %d 的读取方式%d 认为 a 的二进制补码是00111111000000000000000000000000最高位是 0 说明是正数原码就是补码%d 就会输出00111111000000000000000000000000表示的十进制数字这是一个很大的数字。精度问题二进制小数点后 n 位的位权是 2 ^ (-n)由于计算机用采用二进制存储数据二进制有时不能精确地表示十进制小数例如十进制的0.1在二进制中是无限循环小数 0.00011001100110011……由于浮点数位数有限M的位数有限无法精确表示只能近似存储产生截断这就产生了精度问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2408501.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…

网络编程(Modbus进阶)

思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…

利用最小二乘法找圆心和半径

#include <iostream> #include <vector> #include <cmath> #include <Eigen/Dense> // 需安装Eigen库用于矩阵运算 // 定义点结构 struct Point { double x, y; Point(double x_, double y_) : x(x_), y(y_) {} }; // 最小二乘法求圆心和半径 …

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造&#xff0c;完美适配AGV和无人叉车。同时&#xff0c;集成以太网与语音合成技术&#xff0c;为各类高级系统&#xff08;如MES、调度系统、库位管理、立库等&#xff09;提供高效便捷的语音交互体验。 L…

(LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)

题目&#xff1a;3442. 奇偶频次间的最大差值 I 思路 &#xff1a;哈希&#xff0c;时间复杂度0(n)。 用哈希表来记录每个字符串中字符的分布情况&#xff0c;哈希表这里用数组即可实现。 C版本&#xff1a; class Solution { public:int maxDifference(string s) {int a[26]…

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…

龙虎榜——20250610

上证指数放量收阴线&#xff0c;个股多数下跌&#xff0c;盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型&#xff0c;指数短线有调整的需求&#xff0c;大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的&#xff1a;御银股份、雄帝科技 驱动…

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具&#xff0c;该工具基于TUN接口实现其功能&#xff0c;利用反向TCP/TLS连接建立一条隐蔽的通信信道&#xff0c;支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式&#xff0c;适应复杂网…

铭豹扩展坞 USB转网口 突然无法识别解决方法

当 USB 转网口扩展坞在一台笔记本上无法识别,但在其他电脑上正常工作时,问题通常出在笔记本自身或其与扩展坞的兼容性上。以下是系统化的定位思路和排查步骤,帮助你快速找到故障原因: 背景: 一个M-pard(铭豹)扩展坞的网卡突然无法识别了,扩展出来的三个USB接口正常。…

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…

Linux应用开发之网络套接字编程(实例篇)

服务端与客户端单连接 服务端代码 #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <pthread.h> …

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…