我是这个主题的新手,我正在努力理解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具有不同的符号。根据到目前为止的理解,...
如果仔细观察,这是非常合理的,只是因为没有7 F,所以您没有看到0xFFFFFFF的最高有效字节实际上是0。