草庐IT

Zero-Short

全部标签

c++ - 'short' 在 C++ 中的用法

为什么对于任何数字输入我们更喜欢int而不是short,即使输入的整数很少。short的大小在我的x86上是2个字节,在int上是4个字节,分配它不是比int更好更快吗?或者我说没有用short是错误的? 最佳答案 CPU在处理其“native”整数大小时通常是最快的。因此,即使short可能小于int,int可能更接近CPU中寄存器的native大小,并且因此可能是两者中效率最高的。在典型的32位CPU架构中,加载32位值需要一个总线周期来加载所有位。加载16位值需要一个总线周期来加载这些位,加上将其中的一半丢弃(此操作可能仍会在

c++ - 如何在 C++ 中将 char* 转换为 unsigned short

我有一个char*name,它是我想要的短的字符串表示形式,例如“15”,需要将其作为unsignedshortunitId输出到二进制文件。此类型转换还必须是跨平台兼容的。这是正确的转换吗:unitId=unsignedshort(temp);请注意,我在理解二进制方面处于初级水平。 最佳答案 我假设您的char*name包含您想要的短的string表示,即"15"。不要将char*直接转换为非指针类型。C中的转换实际上根本不会更改数据(除了少数异常(exception))——它们只是通知编译器您要将一种类型转换为另一种类型。如果

c++ - C/C++ 将 int 转换为 short 和内联 asm(特定于 ARM)

这不是一个微不足道的问题。注意:我不需要意见或建议来使用纯asm。我实际上需要完成我正在谈论的事情:在将结果分配给shortint时获得没有此符号/零扩展optcode的内联asm。我正在处理一个将16位短裤用于许多功能的库,我正在优化它。我需要使用内联asm添加一些优化函数。问题是在很多地方函数的结果被分配给一个短整型。即,编译器生成uxth或sxtharm操作码。我的目标是避免这个问题并确保不会生成这个无用的操作码。首先,我需要定义我的优化函数来返回shortint。这样,如果它被分配给一个int或一个shortint,就没有额外的操作码来转换结果。问题是我不知道如何跳过编译器在我

c++ - SIMD/SSE : How to check that all vector elements are non-zero

我需要检查所有vector元素是否非零。到目前为止,我找到了以下解决方案。有一个更好的方法吗?我在Linux/x86_64上使用gcc4.8.2,指令高达SSE4.2。typedefcharChrVect__attribute__((vector_size(16),aligned(16)));inlinebooltestNonzero(ChrVectvect){constChrVectvzero={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};return(0==(__int128_t)(vzero==vect));}更新:上面的代码被编译为以下汇编代码(当编译为非

c++ - 使用 Howard Hinnant 的 short_alloc 进行快速 move 分配

我正在使用HowardHinnant的漂亮的基于竞技场的小分配器,short_alloc.令我震惊的是,从vector进行的move分配可以使用通常的快速move分配(即获取目标的资源)来完成,该vector已经超出其arena,因此分配在堆上。然而,事实并非如此:typedefarenaarena_type;typedefshort_allocalloc_type;typedefstd::vectorvec_type;arena_typearena1,arena2;vec_typevec1(alloc_type(arena1)),vec2(alloc_type(arena2));ve

windows - Win32 EXCEPTION_INT_OVERFLOW 与 EXCEPTION_INT_DIVIDE_BY_ZERO

我对EXCEPTION_INT_OVERFLOW和EXCEPTION_INT_DIVIDE_BY_ZERO异常有疑问。Windows将捕获由IDIV指令生成的#DE错误,并最终使用这两个代码之一生成SEH异常。我的问题是它如何区分这两种情况?Intel手册中关于idiv的信息表明它会在“被零除”和“下溢情况”下生成#DE。我快速浏览了intel手册第3卷中关于#DE错误的部分,我能收集到的最好的信息是操作系统必须解码DIV指令,加载除数参数,然后进行比较归零。虽然我觉得这有点疯狂。为什么芯片设计者不使用某种标志来区分错误的2个原因?我觉得我一定错过了什么。有谁确切知道操作系统如何区分这

ios - CLLocation distanceFromLocation : returns zero on iOS 9. 是bug吗?

重现问题的代码:-(void)testDistance{NSLog(@"Testdistance...");CLLocation*location1=[[CLLocationalloc]initWithLatitude:137.02954600000001longitude:50.543728999999999];CLLocation*location2=[[CLLocationalloc]initWithLatitude:55.79676300longitude:49.10834400];CLLocationDistancedistance=[location1distanceFro

objective-c - 核心音频 : is zero equivalent to silence only for PCM audio?

我正在尝试创建一个基本算法来隐藏核心音频的数据包丢失。我只是想用静音替换丢失的数据。在学习核心音频的书中,作者说在无损PCM中,零表示静音。我想知道如果我正在播放VBR(即压缩数据),将零也足以静音吗?在我现有的代码中..当我将零插入音频队列时..它突然卡住了(即它不再释放音频队列回调中消耗的数据..)我想知道为什么 最佳答案 PCM是原始编码样本。所有0(当对样本使用签名数据时)确实是沉默。(事实上​​,任何值都是静音,但如果不滤除这种直流偏移,可能会损坏您的放大器和/或扬声器。)当您使用有损编解码器进行压缩时,您输入的是一种数字

ios - 平移手势 : why need setTranslation to zero?

我在View中添加了一个平移手势,手指移动时移动View,但我发现如果我不调用recognizer.setTranslation(CGPointZero,inView:self.view),翻译是不正确的。为什么?@IBActionfunchandlePan(recognizer:UIPanGestureRecognizer){lettranslation=recognizer.translationInView(self.view)recognizer.view!.center=CGPoint(x:recognizer.view!.center.x+translation.x,y:r

linux - 在 tcp "long"连接和 "short"连接之间选择内部服务

我有一个应用程序,Web服务器将一些请求重定向到后端服务器,后端服务器(Linux)将对Web服务器进行复杂的计算和响应。对于web服务器和后端服务器之间的tcpsocket连接管理,我认为有两种基本策略:“短”连接:即每个请求一个连接。这对于套接字管理和简化整个程序结构来说似乎非常容易。接受后,我们只需要一些线程来处理请求,最后关闭这个套接字。“长”连接:即对于一个tcp连接,可以有多个请求一个接一个。似乎这种策略可以更好地利用套接字资源并带来一些性能提升(我不太确定)。但是这似乎比“短”连接带来了很多复杂性。例如,由于现在socketfd可能被多线程使用,所以必须涉及到同步。还有更