- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在研究字节顺序。我的小端程序可以运行,并提供正确的输出。但是我无法绕过大端。以下是我到目前为止所拥有的。我知道我必须使用位移位,但我认为我在这方面做得不好。我试着问过我的助教和教授,但他们帮不上什么忙。我一直在关注此链接 ( convert big endian to little endian in C [without using provided func] ) 以了解更多信息,但仍无法使其正常工作。感谢您的帮助。
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
FILE* input;
FILE* output;
input = fopen(argv[1],"r");
output = fopen(argv[2],"w");
int value,value2;
int i;
int zipcode, population;
while(fscanf(input,"%d %d\n",&zipcode, &population)!= EOF)
{
for(i = 0; i<4; i++)
{
population = ((population >> 4)|(population << 4));
}
fwrite(&population, sizeof(int), 1, output);
}
fclose(input);
fclose(output);
return 0;
}
最佳答案
我回答不是给你答案而是帮你自己解决。
首先问问自己:一个字节有多少位? (提示:8)接下来,int
中有多少字节? (提示:可能是 4 个)想象一下内存中的这个 32 位整数:
+--------+
0x|12345678|
+--------+
现在在小端机器上按字节想象它。它看起来像这样:
+--+--+--+--+
0x|78|56|34|12|
+--+--+--+--+
需要哪些移位操作才能将字节放入正确的位置?
请记住,当您使用像 >>
这样的按位运算符时,您是在位上进行操作。所以 1 << 24
将是整数值 1
转换为处理器的相反字节顺序。
关于使用 Bitshift 运算符将小端转换为大端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15650208/
如果我想对整数 5 进行位移乘以 3,所以 int a = 5; int b = a << 3; ,结果将是 40十进制为 5是101和 40是101000 . 但是,如果我有以下 char 怎么办?
我只是想学习按位/移位操作。 我遇到了下面的程序,但不理解下面程序中的 AND 条件部分(检查器 & (1 0) { return false;
我正在研究字节顺序。我的小端程序可以运行,并提供正确的输出。但是我无法绕过大端。以下是我到目前为止所拥有的。我知道我必须使用位移位,但我认为我在这方面做得不好。我试着问过我的助教和教授,但他们帮不上什
当我对最大正 2 的补码进行位移时,不应该将它位移 31 位来生成有效的 0,因为它以 0111 1111 等开头。 我试过减少类次,但我假设这只是计算机读取不正确。 int main(void) {
我想知道这个函数实际上执行了什么。据我了解,它应该返回 pSrc[1]。 那么为什么它要将 pSrc[0] 左移 8 位,这会将这 8 位清零。当这些零与 pSrc[1] 进行“或”运算时,pSrc[
我有一段代码在执行一些任务后每秒运行约 120 万次,最大的是设置一个 uint8_t 数组,其中包含来自两个 uint32_t 数据的位移数据。摘录代码如下: static inline u
http://www.fastcgi.com/devkit/doc/fcgi-spec.html在 3.4 节中: typedef struct { unsigned char na
当我在 VS 中编写此代码时,它不起作用(“无法将‘int’隐式转换为‘short’。存在显式转换。您是否缺少强制转换?”): short A = 5; short B = 1 << A; 但是这段代
我不明白您何时以及为什么要使用位移运算符进行微芯片编程:例如... SWITCH_DDR &= ~SWITCH_BIT; SWITCH_PORT |= SWITCH_BIT; 为什么要使用这些运算
在寻找将 2 个大数相乘的有效算法时,在论坛中遇到了以下 c 方法:- ... typedef unsigned long long ULL; ULL multiply (ULL a,
我需要用 bitshift 替换 Java 中的 Math.pow。 for (int i = n - 1; i >= 0; i--) Math.pow(16, n - i - 1) 其中 n
我正在设计一款基于多人 RTS 图 block 的游戏,其中所有游戏逻辑均由服务器处理(用 C 语言编写),并且客户端是在 Unity 中制作的,以便于跨平台部署。 我正在设计一个将通过 TCP 发送
我试图从函数返回两个 32 位 int 值(_mouseX 和 _mouseY),方法是先将它们打包成 64 位值,然后在我使用它们时在代码的其他地方解包它们。但是,当我通过这个函数获取数据时,数据完
var1=anyInteger var2=anyInteger (Math.round(var1/var2)*var2) 上面的 JavaScript 移位替代方案的语法是什么? 使用整数而不是 fl
在这个例子中 >>= 做了什么? byte fsr = 2; fsr >>= 2; 我在这里遇到的: https://github.com/sparkfun/MMA8452_Accelerometer
有没有人有如何使用 BitShift 的例子? Pytorch 中的运算符? 最佳答案 Bitwise shift operator performs element-wise operation.
这主要是学术性质的。只是试图理解为什么这不起作用以及如何正确地做到这一点。 我在我的数据库中存储了 0 1 或 2,其中每个代表不同的状态标志。 (这不能在生产中改变) 在我的代码中我有一个枚举 pu
我正在研究基于位板的国际象棋引擎,其中一项大量执行的操作是设置/清除无符号 64 位整数中的位。由于我不太了解哪些代码可以在某些处理器上“更快”地运行,因此我无法完全理解这一点。 设置和清除位是一个非
考虑以下代码片段: int main(){ constexpr int x = -1; if(x >= 0){ constexpr int y = 1<
我有一个问题要问你们,这已经让我抓狂了 2 天了。也许是因为我缺少位移位的基础知识,但不知何故我没有想到它。我想要的是一个简单的程序,它读取 3 个 char 或 uint8_t,将它们存储到一个大的
我是一名优秀的程序员,十分优秀!