了解并识别签名号码

问题描述 投票:0回答:1

我是这个主题的新手,我正在努力理解0xFFFFFFF&0x00000001如何具有相同的符号,而0x0000001和0x12345678具有不同的符号。根据我到目前为止的理解,在0-7之间具有最高有效位的十六进制数字为正,而8-F为负。

为了进一步了解,这是我想要了解的内容:

问题:完成执行操作并满足注释中指示的要求的C函数。

评论:

    /*
    * diffSign – return 1 if x and y have different signs 
    * Examples: diffSign(0xFFFFFFF, 0x00000001) = 0
    * diffSign(0x0000001, 0x12345678) = 1
    * Legal ops: & | ^ ~ << >>
    * 1-byte const (0x00 to 0xFF)
    */

答案:

     int diffSign(int x, int y) {
        return ((x >> 31) & 0x1) ^ ((y >> 31) & 0x1);
    }

[如果可能,我也非常感谢您对&0x1如何帮助我识别标志的一些说明!似乎有点多余,我不太确定方程式中的意义。

我是这个主题的新手,我正在努力理解0xFFFFFFF&0x00000001如何具有相同的符号,而0x0000001和0x12345678具有不同的符号。根据到目前为止的理解,...

hex bitwise-operators integer-arithmetic
1个回答
0
投票

如果仔细观察,这是非常合理的,只是因为没有7 F,所以您没有看到0xFFFFFFF的最高有效字节实际上是0。

© www.soinside.com 2019 - 2024. All rights reserved.