gpt4 book ai didi

c - 左移-1位

转载 作者:行者123 更新时间:2023-11-30 14:50:57 26 4
gpt4 key购买 nike

在解决问题时,我一直在想这个程序的输出如何给出 ffffffff 。因为左移位应该给出-2。我在这里交叉检查了Online Calculator给予-2。我可以看到-1的二进制值为11111111。但是如何呢?另外,我在这里的纪念Signed int conversion :

-1 ---> 0xff --> 1111 1111

-2 ---> 0xfe --> 1111 1110

-3 ---> 0xfd --> 1111 1101

-8 ---> 0xf8 --> 1111 1000

#include<stdio.h>
int main()
{
printf("%x", -1<<1);
getchar();
return 0;
}

请告诉我,当使用按位移位运算符时,编译器如何看待小于 0 的整数?

最佳答案

当我运行你的程序时,它输出“fffffffe”。但是,该行为是未定义的。 C 标准规定,仅当要移位的值非负时(并且仅当移位不溢出时)才定义左移。所以,当你评估-1 << 1时,C 实现可以做任何事情。

关于c - 左移-1位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48657246/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com