gpt4 book ai didi

c - 位级运算符

转载 作者:太空宇宙 更新时间:2023-11-04 02:51:30 26 4
gpt4 key购买 nike

我应交的为数不多的编程作业之一是处理位级运算符,我希望我做对了。

#include <stdio.h>

int main(void){
int x;
printf("Enter an x: ");
scanf("%x", &x);
printf("X = %d\n", x);
// Any bit in x is 1
x && printf("A bit in x is 1!\n");
// Any bit in x is 0
~x && printf("A bit in x is 0!\n");
// Least significant byte of x has a bit of 1
(x & 0xFF) && printf("A bit in least significant byte of x is 1!\n");
// Most significant byte of x has a bit of 0
int most = (x & ~(0xFF<<(sizeof(int)-1<<3)));
most && printf("A bit in the most significant byte of x is 0!\n");
return 0;
}

赋值限制了我们可以使用的内容,因此不会有循环或条件以及许多其他限制。我对位级运算符有点困惑,所以我只是希望如果有任何错误我可以修复它并了解为什么它是错误的。谢谢。

最佳答案

您不应该对这些操作使用有符号整数,因为某些情况会导致未定义/实现定义的行为:Arithmetic bit-shift on a signed integer

int most = (x & ~(0xFF<<(sizeof(int)-1<<3)));

你应该否定 x,而不是右边:

int most = (~x & (0xFF<<(sizeof(int)-1<<3)));

关于c - 位级运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21662769/

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