bit-shift相关内容

长时间找到最高有效位

我处在一种独特的情况下,搜索“最高有效位"会产生太多结果,但找不到适合我需求的答案! 问题本身非常简单:“如何找到无符号长整数中的最高有效置位?"当我进行计算时,最右边的位是位置'0'. 我知道这涉及到屏蔽最低位,检查并在增加计数的同时向左移一次,然后以最低的第二位重复,等等. 我以前已经做过,但是由于任何原因我现在都做不到. 编辑:“最高有效"是指最左边的设定位,对不起造 ..
发布时间:2020-09-21 04:25:57 其他开发

移位的实际应用

我完全理解如何移位位.我已经在纸上和代码中处理了许多示例,并且在那里不需要任何帮助. 我正在尝试提出一些实际的例子,说明如何使用位移.以下是一些我想出的例子: 也许我能概念化的最重要的例子与字节序有关.在大字节序系统中,最低有效位从左开始存储,而在小字节序系统中,最低有效位从右开始存储.我想对于使用相反字节序策略的系统之间的文件和网络传输,必须进行某些转换. 在处理n ^ 2,n ..
发布时间:2020-09-21 04:22:15 其他开发

使用C语言中的算术移位运算符执行逻辑移位

现在,我正在阅读《计算机系统:程序员的视角》这本书. 书中的一个问题说要对有符号整数进行逻辑右移,我不知道该如何开始. 以下是本书中的实际问题: 填写以下C函数的代码. 函数srl使用算术右移(由值xsra给出)执行逻辑右移,然后执行其他操作,不包括右移或除法. 函数sra使用逻辑右移(由值xsrl给出)执行算术右移,然后执行其他操作,不包括右移或除法. 您可以 ..
发布时间:2020-09-21 04:22:04 其他开发

逻辑右移,算术右移和旋转右移的区别

我一直在阅读经典的Hacker的喜悦,但我很难理解逻辑右移,算术右移和右移之间的区别.如果怀疑似乎太简单了,请原谅. 解决方案 首先请记住,机器字的大小是固定的.说4,您输入的是: +---+---+---+---+ | a | b | c | d | +---+---+---+---+ 然后将所有内容向左推一个位置会得到 +---+---+---+---+ | b | c ..
发布时间:2020-09-21 04:17:47 其他开发

移位大二进制文件?

在C中对大量二进制数据进行位移的最佳或推荐方法是什么?我有一个200K的二进制文件,我想先左移,然后再右移全部. 解决方案 如果您的操作系统支持,请使用内存映射文件.然后做一点移位,它将非常非常有效率. 有关更多信息,请参见以下答案:内存的优点是什么映射的文件? ..
发布时间:2020-09-20 22:04:58 其他开发

在C ++中将24位整数(2s补码)转换为32位整数

dataFile.bin是具有6个字节记录的二进制文件.前3个 每条记录的字节包含纬度,而后3个字节包含 经度.每个24位值表示弧度乘以 0X1FFFFF 这是我一直在努力的任务.我已经好几年没有做C ++了,所以它花费我的时间比我认为的要长-_-.谷歌搜索后,我看到了对我来说有意义的算法. int interpret24bitAsInt32(byte[] byteArray) { ..
发布时间:2020-09-20 21:31:33 C/C++开发

转移负的BigInteger值-Java

我正在尝试将7字节数组向右移动7位. 为此,我正在使用BigInteger的shiftright方法.但是,当向右移负的BigInteger时,将添加1的填充或有时删除前导位. 以下是执行移位的以下代码: byte[] vcwManD = decryptedVCW; BigInteger bigIntD = new BigInteger(vcwManD); // cr ..
发布时间:2020-09-20 20:29:58 Java开发

实施逻辑右移

所以我正在研究nand2tetris项目,并且由于硬件不支持,我想在软件级别实现右移逻辑. 我知道右移逻辑是二分法.因此,我实现它的第一步是计算在值变为0或为负之前我能够从初始值中减去2的次数.如果数字为负,则类似. 但是,我发现了一个不起作用的情况.我想右移-27139.移位后的二进制值是19199.应该是19198.因此,我正在寻找一种实现移位的新方法. 我可以and个值,o ..
发布时间:2020-09-13 01:28:20 其他开发

用8085微处理器汇编语言查找数字的绝对值

我的任务是用8085汇编语言查找任何给定数字的绝对值. 以下是算法(可在Internet上找到): mask = n >> 7(数字本身是8位) (mask + n)XOR掩码 我的问题是我将如何用汇编语言实现这一点. 看来我应该使用"RRC"命令,但是对数字执行循环移位,算法似乎不起作用. 任何想法都将不胜感激. 干杯. 解决方案 abs算法中的n>>7是算 ..
发布时间:2020-07-16 18:46:00 其他开发

有什么办法可以在gcc< 4.4上进行128位转换吗?

他们添加int128_t时, gcc 4.4似乎是第一个版本.我需要使用位移,有些位字段已经用完了. 编辑:可能是因为我在32位计算机上,所以无法在32位计算机(Intel Atom)上安装它吗?如果我可以按预期的方式工作,我不在乎它是否会生成棘手的慢速机器代码. 解决方案 我很确定__int128_t在早期版本的gcc上可用.刚刚在4.2.1和FreeBSD上进行了检查,size ..
发布时间:2020-07-16 18:37:46 其他开发

Java语言规范中的位移位运算符描述

在JLS8中的中指定§JLS-15.19 如果左侧操作数的提升类型为int,则仅将右侧操作数的最低5位用作移位距离.就像右手操作数受到了按位逻辑AND运算符&的约束. (§15.22.1),其掩码值为0x1f(0b11111).因此,实际使用的移动距离始终在0到31(含)范围内. 我不清楚这个粗体陈述.一个例子深表赞赏. 解决方案 这是Java在C和C ++世界中利用编译器优化 ..
发布时间:2020-06-27 18:56:39 Java开发

SHLD / SHRD指令的SIMD版本

SHLD / SHRD指令是用于实现多精度转换的汇编指令。 请考虑以下问题: uint64_t array [4] = {/ *某物* /}; left_shift(array,172); right_shift(array,172); 实现 left_shift 和 right_shift 这两个函数可以对四个64位无符号整数的数组进行移位,就好像它是一个 ..
发布时间:2020-06-06 19:30:44 其他开发

在硬件级别上如何实现转变?

当要转移的数目未知时,如何在硬件级别实现移位? 我无法想象每个转移电路都有单独的电路可以移位的数字(在64位计算机上需要64个移位电路),也不能想象这是一个移位循环(在64位计算机上最多需要64个移位周期)。两者之间是某种妥协还是巧妙的技巧? 解决方案 该电路称为“ 桶形移位器“-基本上是多路复用器的负载。每个地址位需要移位一层,因此一个8位的桶形移位器需要三位来表示“要移位多少”, ..
发布时间:2020-06-04 19:21:20 其他开发

用整数将循环计数器除以常数的循环的时间复杂度

我正在尝试以O表示法计算简单算法的时间复杂度,但是其中一部分严重困扰着我。这是该算法的简化版本: int a = n while(a> 0) { //用于时间复杂度为n ^ 3的循环 a = a / 8 } 在这种情况下,它是整数除法,因此while循环将在a的值降至8以下时终止。我不确定如何用n表示。我还想知道如何处理类似这样的将来的计算,在这些计算中,循环数 ..
发布时间:2020-06-03 20:01:00 其他开发

是否仅从ADD和NAND转移逻辑?

我正在用一种非常简单的汇编语言制作一个乘法器,在该语言中,我具有BEQ,NAND和ADD来创建SRL。我还必须将乘数保持在50行以下(到目前为止已使用16行),因此希望解决方案可以循环抛出。 编辑:我的问题是我如何才能实现仅具有NAND和ADD的SRL 想法虽然效率很低,但是也许有人可以改善它: 将减量a减1。将该值存储在b中。添加b和b并存储在c中。以a表示c,如果为true, ..
发布时间:2020-06-01 20:59:20 其他开发

如何正确遍历并打印Int,Long,Float或BigInteger的位?

我正在尝试调试一些移位操作,我需要可视化在移位操作之前和之后存在的位. 我从这个答案中了解到,我可能需要处理移位带来的回填,但是我不确定就是这个意思. 我认为通过问这个问题(如何在int中打印位),我可以弄清楚回填是什么,也许还有其他一些问题. 这是到目前为止的示例代码. static string GetBits(int num) { St ..
发布时间:2020-05-28 23:18:21 C#/.NET