谁能告诉我如何从C中的32位无符号整数中提取'n'特定位.
例如,假设我想要32位值的前17位; 我应该做什么?
我认为我应该使用模数运算符,我尝试了它,并能够得到最后8位和最后16位
unsigned last8bitsvalue=(32 bit integer) % 16
unsigned last16bitsvalue=(32 bit integer) % 32
Run Code Online (Sandbox Code Playgroud)
它是否正确?有没有更好,更有效的方法来做到这一点?
我刚刚开始学习直接映射和设置关联缓存的概念.我有一些非常基本的疑虑.开始.
假设地址是32位长,我有一个32KB缓存,64Byte块大小和512帧,实际存储在"块"内的数据量是多少?如果我有一个从内存位置加载的指令,并且该值是16位整数,那么64Byte块之一现在只存储一个16位(2Bytes)整数值.块中的其他62个字节是什么?如果我现在有另一个加载指令也加载一个16位整数值,这个值现在进入另一个帧的另一个块,具体取决于加载地址(如果地址映射到前一个指令的同一帧,则先前的值被驱逐并且块再次以64字节存储仅2字节).正确?
请原谅我,如果这看起来像一个非常愚蠢的怀疑,它只是我想要正确地得到我的概念.
我想在 makefile 中指定一些命令行参数。我通常像
这样运行我的程序:
gcc -o prog prog2.c prog.c
./prog text1.txt text2.txt
Run Code Online (Sandbox Code Playgroud)
生成文件:
prog: prog2.o prog.o
gcc -o prog prog2.o prog.o
prog2.o: prog2.c prog2.h
gcc -c prog2.c
clean :
rm prog2.o
Run Code Online (Sandbox Code Playgroud)
我如何在此处包含 txt 文件?
另外我如何在单个 make 文件中执行。说我是否也想跑
gcc -o prog prog3.c prog.c
./prog text1.txt text2.txt
Run Code Online (Sandbox Code Playgroud) 任何人都可以给我一个在线计算器的链接或一个准确的公式来计算自1970年以来到给定日期的毫秒数?我有一个计算这个的功能.但我想比较我的函数的输出与java中的一些内置函数的输出或一些在线计算器的输出进行相同的计算?我试过这个
Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("GMT-4"));
cal.set(2000, 01, 21, 04, 33, 44);
long mynum=cal.getTimeInMillis();
System.out.println(mynum);
Run Code Online (Sandbox Code Playgroud)
问题是每次运行时"mynum"值都在不断变化.所以我无法做正确的比较.
任何人都可以指引我走正确的道路吗?