小编phu*_*clv的帖子

为什么Int32最大值是0x7FFFFFFF?

我在MSDN文档中看到,最大值Int322,147,483,647十六进制0x7FFFFFFF.
http://msdn.microsoft.com/en-us/library/system.int32.maxvalue.aspx

我认为,如果它Int32应该存储32位整数值,最终应该是4,294,967,295十六进制0xFFFFFFFF.

我的问题是为什么Int32存储Int32位整数值?

c# types int32

23
推荐指数
5
解决办法
4万
查看次数

比 % 运算符更快的可分性测试?

我注意到我的电脑上有一个奇怪的东西。*手写的可分性测试明显比%算子快。考虑最小的例子:

* AMD 锐龙 Threadripper 2990WX,GCC 9.2.0

static int divisible_ui_p(unsigned int m, unsigned int a)
{
    if (m <= a) {
        if (m == a) {
            return 1;
        }

        return 0;
    }

    m += a;

    m >>= __builtin_ctz(m);

    return divisible_ui_p(m, a);
}
Run Code Online (Sandbox Code Playgroud)

该示例受奇数a和 的限制m > 0。然而,它可以很容易地推广到所有am。代码只是将除法转换为一系列加法。

现在考虑使用以下命令编译的测试程序-std=c99 -march=native -O3

    for (unsigned int a = 1; a < 100000; a += 2) {
        for (unsigned int m …
Run Code Online (Sandbox Code Playgroud)

c math x86 modulo compiler-optimization

23
推荐指数
2
解决办法
749
查看次数

GCC __attribute __((模式(XX))实际上做了什么?

这源于今天早些时候关于bignum库和gcc特定的C语言攻击主题的问题.具体来说,使用了这两个声明:

typedef unsigned int dword_t __attribute__((mode(DI)));
Run Code Online (Sandbox Code Playgroud)

在32位系统和

typedef unsigned int dword_t __attribute__((mode(TI)));
Run Code Online (Sandbox Code Playgroud)

在64位系统上.

我假设这是对C语言的扩展,没有办法实现它在当前(C99)标准中实现的任何目标.

所以我的问题很简单:这个假设是否正确?这些陈述对底层内存有何影响?我认为结果是我2*sizeof(uint32_t)对于dword32位系统和2*sizeof(uint64_t)64位系统,我是否正确?

c attributes c99 bignum

22
推荐指数
1
解决办法
1万
查看次数

从批处理文件触发任务栏按钮闪烁?

是否有可能从批处理文件中触发Windows"闪存任务栏按钮X次或直到窗口到达前台"行为?我试图在完成时将用户的注意力转移到长时间运行的脚本上.

只要不需要安装(即可执行文件可以与我的脚本捆绑在一起),使用外部程序来触发闪存就可以了.

更新

这就是我最终得到的(Andreas'Delphi代码的极简主义端口).我在MinGW下编译它似乎只依赖于KERNEL32.DLL和USER32.DLL,所以应该是高度可移植的.

闪烁三次,然后保持突出显示直到前景.

#define WINVER 0x501
#define _WIN32_WINNT 0x501

#include <windows.h>

void main(int argc, char **argv) {
    FLASHWINFO info = { sizeof(info), GetConsoleWindow(), FLASHW_TIMERNOFG | FLASHW_TRAY, 3, 0 };

    FlashWindowEx(&info);
}
Run Code Online (Sandbox Code Playgroud)

windows taskbar batch-file

21
推荐指数
1
解决办法
2493
查看次数

从4个复合字节构建一个32位浮点数

我正在尝试用4个复合字节构建一个32位浮点数.有没有比使用以下方法更好(或更便携)的方法?

#include <iostream>

typedef unsigned char uchar;

float bytesToFloat(uchar b0, uchar b1, uchar b2, uchar b3)
{
    float output;

    *((uchar*)(&output) + 3) = b0;
    *((uchar*)(&output) + 2) = b1;
    *((uchar*)(&output) + 1) = b2;
    *((uchar*)(&output) + 0) = b3;

    return output;
}

int main()
{
    std::cout << bytesToFloat(0x3e, 0xaa, 0xaa, 0xab) << std::endl; // 1.0 / 3.0
    std::cout << bytesToFloat(0x7f, 0x7f, 0xff, 0xff) << std::endl; // 3.4028234 × 10^38  (max single precision)

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c++ floating-point portability endianness single-precision

21
推荐指数
4
解决办法
4万
查看次数

c ++ std :: vector检查第一个或最后一个元素

我有以下for eachC++代码:

for (auto item : myVector)
{
    std::cout << item;

    if (item == orderBy.IsLast())       // <--- Check if this is the last element
        std::cout << "(Is last element) " << std::endl;
    else if (item == orderBy.IsFirst()) // <-- Check if this is the first element
        std::cout << "(Is first element)" << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

当然,IfLast()IfFirst()不上不存在std::vector.是否有本地std::方法来检查第一个和最后一个元素?

c++ for-loop c++11

21
推荐指数
3
解决办法
2万
查看次数

xterm中的光栅图形?

不,不是ASCII图形,请看这里的截图:

http://en.wikipedia.org/wiki/W3m

图片

这怎么可能呢?

我检查了源,它只打印字符序列.但是,我无法在xterm文档或其他地方找到任何对图形绘制或图像嵌入转义序列的引用.

w3m似乎也是唯一这样做的软件.

这里矢量图形泰克仿真,但是这是在VT模式下进行.

也许我在寻找错误的东西?

任何的想法?

x11 terminal graphics xterm

20
推荐指数
2
解决办法
8654
查看次数

如何用8个bool值创建一个字节(反之亦然)?

我有8个bool变量,我想将它们"合并"成一个字节.

有一个简单/首选的方法来做到这一点?

相反,如何将一个字节解码为8个独立的布尔值?

我认为这不是一个不合理的问题,但由于我无法通过谷歌找到相关文档,它可能是另一个"非你所有直觉都是错误的"案例.

c++ boolean bit-manipulation bit-packing

20
推荐指数
4
解决办法
2万
查看次数

警告:此十进制常量仅在ISO C90中无符号

一段代码:

long rangeVar = 0;
rangeVar = atol(p_value);

if (rangeVar >= -2147483648 && rangeVar <= 2147483647)
Run Code Online (Sandbox Code Playgroud)

在编译时,我得到:

警告:此十进制常量仅在ISO C90中无符号

提前致谢

c compiler-construction iso c89 long-integer

20
推荐指数
2
解决办法
3万
查看次数

批处理文件使用%1进行复制以进行拖放

我试图制作一个拖放批处理文件.

我有一个问题,文件存在,但批处理文件找不到它...

我想将.png文件(如pict_2013020808172137243.png)复制到另一个文件夹并重命名.

在路径中是符号_和空格,我也不知道如何使多拖放来制作相同的功能(重命名和添加.zip).

我尝试了这个,但没有结果:(

@ECHO OFF
ECHO %1
COPY "%1" "%CD%\test\" /Y /S 
REN "%CD%\mob\*.png" "%CD%\test\test.png"
7za u -tzip "%appdata%\.virto\pack.zip" "test" -r
Run Code Online (Sandbox Code Playgroud)

parameters drag-and-drop copy path batch-file

20
推荐指数
1
解决办法
5万
查看次数