问题标签 [byte-shifting]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 移位在最高有效数字处给出 1
我目前正在编写一个 C 函数,该函数从用户那里获取一个数字并将其转换为二进制输出。首先,这是代码:
该代码在大多数情况下都可以正常工作,除了当我输入一个奇数(例如:17)时,我在最重要的位置得到一个:
偶数不出现前导“1”:
我在远程 32 位 linux 机器上运行它,这可能是原因吗?
c - 我想知道如何在 C 中处理这些函数。我尝试解决它们但失败了
这就是我的代码。我试图做前两个,但我不确定它们是否正确,因为它没有输出任何不同的东西。我应该有的输出是这样的:
但是,在我尝试这样做之后,它仍然输出错误的输出。
它输出这个:
如果有人能指导我完成这件事,我将不胜感激。我刚开始学习C,我迷路了。
谢谢
c - 将 int 中的最后 10 位向左旋转
我需要实现一个向左旋转 int 的最后 10 位的函数。
所以如果一个 int 有值
左旋转 2 会给我们
进一步向左旋转 1 将给出
ptr
- 指向我们要旋转的给定 int 的指针n
- 我们想要旋转多少次
如果我们想旋转整个 int,我知道该怎么做,但我不确定如何只对最后 10 位数字进行操作。我想左旋转一个int,它看起来像下面这样。但是,我仍然不明白如何只旋转最后 10 位数字。
c - 没有 for、while 或 if 循环的十进制到二进制
如何编写一个程序来读取整数并显示二进制数而不使用循环,只使用二进制运算符?(仅限基本功能)
c - c函数以特定顺序合并字节取决于字节序
我希望能够合并来自两个无符号长参数的字节,正好占字节的一半,从第二个参数的最低有效字节开始的一半和第一个参数的其余部分。
例如:
首先,我需要检查我工作的系统是小端还是大端。我已经写了一个函数来检查它,叫做is_big_endian()。
现在我知道 charchar *c = (char*) &y
会给我存储在最大内存地址的字节。
现在,我想使用 AND(&) 位运算符来合并 x 和 y 字节,但我不能使用它,因为我真的不知道“long”的大小是多少,32 或 64 可能不同位系统,所以我不能真正使用固定大小。
这意味着我不能使用任何位掩码,例如:
我不允许使用 long long、uint_fast64_t 或 reinterpret_cast 或任何其他“外部”的东西。
我在想:
- 使用字节移位
- 使用一个数组来存储位并在这个数组上运行一个循环。
所以我写了这段代码,我可以只使用“sizeof”来查找 long 的大小,而不关心它是 32 位还是 64 位系统。
如果那是一个小端系统,我已经把 y 的右边位去掉了,因为那里的 LSB 是最左边的位。如果这是一个大端系统,则相反。
但它运行得不太好,输出是:0xffffffffbbcdff5f
任何帮助,将不胜感激。
c - C函数替换参数的特定索引中的字节
所以我使用以下代码:
我有一个给定的单词 |w| 字节。
- 字节从 0(最低有效)到 w/8-1(最高有效)编号。
例如:
我想我需要检查系统是大端还是小端,因为我的代码更改了完全相反的字节。例如,它改变了 MSB 而不是 LSB。但是......我意识到这并不重要,因为我正在处理比特。
如您所见,此处的代码更改了错误的索引:
好吧,我想过将我的代码更改为带有数组的东西,只是为了获得一个数字-> 作为数组在其上运行-> 更改所需的索引-> 就是这样。但是..我不能正确地写它所以我坚持移动的东西(我也不能正确地写)。这是我的尝试:
我不允许使用 long long、uint_fast64_t 或 reinterpret_cast 或任何其他“外部”的东西。
我还认为如果代码在 32 位系统或 64 位系统上运行,我需要以某种方式进行更改,以确定哪个大小是无符号长(4 或 8 字节)。
c - 在 C 中对字节数组元素进行位移位有什么作用
我试图理解这段代码。
所以我想我的主要问题是,保持前两个位移是否相关?我真的不知道这里到底发生了什么。据我所知,第一个移位是对输入数组的第一个元素进行 24 位右移,然后与下一个元素进行或运算。但是,由于元素的长度只有 8 位,这不总是为零吗?或者我错过了什么。
c - C中十六进制的位移(旋转)
我正在尝试在 C 中旋转十六进制数字。我遇到的问题是,每个循环。数字中出现更多的零。
这是我的代码:
我在这个站点上看到了一些其他代码,这些代码在班次中添加了 & 0x0F,但它对我不起作用。
这是我使用编译器的结果
谢谢您的帮助。
c++ - 如何在c ++中将两个无符号字符合并为一个无符号短(16位)
如何在 C++ 中将两个无符号字符合并为一个无符号短字符。数组中的最高有效字节包含在 array[0] 中,最低有效字节位于 array[1] 中。(大端)
java - 在java中将数据存储在字节数组中
我正在尝试将像“密码”这样的字符串转换为十六进制值,然后将它放在一个长数组中,循环工作正常,直到达到值“6F”(o char 的十六进制值)然后我有一个异常java.lang.NumberFormatException
我如何将 6F 值存储在 Byte 数组中,因为 6F 大于 1 字节?请帮助我