bit-shift相关内容

如何从 shl 获得大于 2^32 的结果?

声明... constn = 2 shl 33 将常量 n 设置为值 4,没有任何编译器投诉! 还有... Caption := IntToStr(2 shl 33); ...返回 4 而不是 8589934592.看起来编译器是这样计算的: 2 shl 33 = 2 shl(33 和 $1F)= 4 但没有任何警告或溢出. 如果我们声明,问题仍然存在: cons ..
发布时间:2021-11-25 07:06:42 C#

C 64 位左移失败

我在 C 中有此代码(仅供学习): char x;uint64_t 总计 = 0;for(x = 20; x 打印的内容: 20 - 262144821 - 550503222 - 1153434423 - 2411725624 - 5033165625 - 10485760826 - 21810381627 - 1844674407362566554428 - 184467440735 ..
发布时间:2021-11-25 05:07:01 C#

Arduino 中不需要的符号扩展

我正在尝试在 Arduino 中实现逻辑右移(即避免符号扩展),并在阅读 Arduino BitShift 指南后(https://www.arduino.cc/en/Reference/Bitshift),它表明将无符号变量向右移动,不会导致符号扩展: 当你将 x 右移 y 位 (x >> y) 时,x 中的最高位是a 1,行为取决于 x 的确切数据类型.如果 x 是类型int,最高位为符 ..
发布时间:2021-11-17 03:59:47 C/C++开发

无符号右移/零填充右移/& gt;& gt;在PHP中(等效于Java/JavaScript)

在将其标记为重复项之前,请阅读以下内容,并检查 我的代码 * 我的更新代码! 所以我的问题是,我必须实现Java/JavaScript'>>>'(无符号右移/零填充右移),但是我无法以完全相同的方式工作. 我选择了我在SO和Web上找到的11个最有希望的实现(链接在代码中作为注释添加)并添加了一些测试用例.不幸的是,这些功能的 NONE 对所有测试都返回了与Java/JS相同的响应.( ..
发布时间:2021-05-19 18:55:03 Java开发

为什么任何现代x86掩码将计数转换为CL中的5个低位

我正在研究x86 ASM中的左右移位操作,例如 shl eax,cl 摘自IA-32英特尔架构软件开发人员手册3 所有IA-32处理器(从Intel 286处理器开始)确实掩盖了这一转变计数到5位,导致最大计数为31.此掩码为在所有操作模式(包括虚拟8086模式)下完成减少指令的最大执行时间. 我正试图了解这种逻辑背后的原因.也许它是这样工作的,因为在硬件级别上,很难使用1个周期 ..
发布时间:2021-04-24 21:08:04 其他开发

(Java)将负的short的比特放入整数

我想在32位整数的尾部放入一个短整数(16位)(我正在将一些小范围的数字压缩为唯一的整数).但是没有找到比下面更好的方法了,我必须使用两次操作,这会更好吗? short sh = -1;//16位1int zip = 0;//最后16位代表一个短数字System.out.println(“错误的方式,也许我们很多人会首先尝试:");邮编| = sh;//预期为0xffffSystem.out. ..
发布时间:2021-04-15 20:02:11 Java开发

Verilog中可综合的算术移位

我最近在stackoverflow上遇到了此答案. 使用Verilog,一旦进行了部分选择,结果将是未签名的.在选定的零件上使用 $ signed 系统任务对其进行签名. 此方法是否可综合(即系统任务 $ signed ) 如果它不可合成,是否有另一种方法可以对像 a>>> 2 这样的变量执行算术移位(当 a除以4). 解决方案 它当然是可合成的.您的特定工具 ..
发布时间:2021-04-15 20:02:05 其他开发

基数浮点数

我想对C中的浮点数进行基数排序.下面是我的代码.但是,我的输出不正确.例如,如果我用3.1,-5和1运行代码,则我的排序值将打印为3.000000,-5.000000和1.000000. 我知道要正确地从浮点数转换为int并转换回浮点数,我需要应用以下逻辑,但是由于我尝试了很多错误,因此我不确定如何将其集成到rfloat()中. 我怎样才能正确地对浮点数应用按位基数排序? floa ..
发布时间:2021-04-15 20:02:02 其他开发

Python混合Garmin时间戳

我属于garmin手表,要报告统计他们有sdk在此SDK中,它们具有两种格式的时间戳一个是32位的真实时间戳另一个是16位的下半部分,必须与第一个 组合在一起 我不知道如何用Python编写代码 这是他们的解释和公式 * timestamp_16是timestamp字段的16位版本(32位),代表时间戳的低16位.该字段应与较早的时间戳字段结合使用,该时间戳字段用作高16位的参考. ..
发布时间:2021-04-15 20:01:59 Python

为什么有必要在有符号除法的红利上加2的偏倚?

我正在“计算机系统-程序员的视角"中学习汇编代码,并且遇到了以下示例: 在下面的C函数中,我们保留了操作的定义OP不完整: #define OP/*未知运算符*/short arith(short x){返回x OP 16;} 在编译时,gcc会生成以下汇编代码: arith:leaq 15(%rdi),%r​​axtestq%rdi,%rdicmovns%rdi,%raxsar ..
发布时间:2021-04-15 20:01:56 其他开发

Delphi XE LiveBindings-位到字节

我刚刚发现了与Delphi的动态绑定.并创建了我的第一个组件,用于处理变频器的控制字.它本身的组件似乎可以在表单设计器中对其进行良好的测试.但是,编译和运行应用程序将无法正常工作.像这样的livbindings的屏幕截图: 这是组件的代码 单位cBits2Byte;界面用途System.SysUtils,System.Classes;类型TBits2Byte = class(TCompon ..
发布时间:2021-04-15 20:01:53 其他开发

在Python中将数字循环移位(或旋转)数字

假设我有以下输入内容: 1234 如何获得以下输出? 3412 这是通过将输入的数字循环移位(或旋转)两次来获得的. 我尝试了以下代码: number = 1234bin(数字>> 1) 但是它没有产生我所期望的结果. 解决方案 >> 运算符执行 ..
发布时间:2021-04-15 20:01:46 Python

仅使用移位加法和减法的对数时间整数除法

我被要求仅使用移位,加法和减法来实现具有对数时间复杂度的整数除法. 我可以看到如何处理2的幂的除数,但是如何处理奇数的除数,以使时间保持对数? 有可能吗? 编辑:在时间复杂度上不是对数但仍比线性更好的一种方法也将受到欢迎. 谢谢 解决方案 就像在纸上做长除法一样,但是用二进制进行.您可以将位从除法器移位到累加器中,直到其大小至少等于除数,然后从累加器中减去除数,然后 ..
发布时间:2021-04-15 20:01:43 其他开发

为什么Java和C#具有位移运算符?

整数乘积(暂时忘记除法)之间的差值是否仍然有利于移位,如果是这样,该差值有多大? 这似乎只是一个低级的优化,即使您想要它,(C#/Java)在大多数情况下也不应该将字节码编译器或jit捕获吗? 注意:我测试了C#(使用gmcs Mono C#编译器版本2.6.7.0)的编译输出,并且即使乘以2的倍数,乘法示例也不使用shift进行乘法. C# http://csharp.past ..
发布时间:2021-04-15 20:01:40 Java开发