Tag:

bitParity – 查找整数中的奇数位数

我必须创建一个函数bitParity(int x) ,它取一个整数,如果x的位forms有一个奇数0 ,则返回1否则返回0 。 例如: bitParity(5) = 0, bitParity(7) = 1 但是,这很难,因为我只能在这个问题上使用位运算符( ! ˜ & ˆ | + <>是唯一合法的)。 这意味着,没有循环, if-then或任何类型的东西。 可以使用常量。 到目前为止,我所做的并不起作用,但我认为我应该将整数的位移16,8和4倍,并将剩余的整数进行XOR 。 有人可以提供一些建议吗? 谢谢。

加倍和除以浮点值

我有一个函数,我相信将int转换为浮点值,拆分为值的符号指数和分数组成部分。 使用IEEE 754表示浮点值。 unsigned test(unsigned x) { // split the given bits of sign exponent and fraction, combine to return unsigned int sign = (x & 0x80000000) >> 31; unsigned int expo = (x & 0x7F800000) >> 23; unsigned int frac = (x & 0x007fffff); return (sign << 31) | (expo << 23) | frac; […]

C – 从一个字节中获取一点

可能重复: 如何从c中的整数值中逐位获取数据? 我有一个8位字节,我想从这个字节得到一点,比如getByte(0b01001100,3)= 1

计算unsigned int中位转换次数的最快方法

我正在寻找计算unsigned int中位转换次数的最快方法。 如果int包含: 0b00000000000000000000000000001010 转换次数为:4 如果int包含: 0b00000000000000000000000000001001 转换次数为:3 语言是C.

如何从变量中访问特定的位组?

我有一个“x”位的变量。 如何提取特定的一组位然后在C中处理它们?

有没有办法通过联合访问各个位?

我正在写一个C程序。 我想要一个我可以作为char访问的变量,但我也可以访问特定的位。 我以为我可以使用像这样的工会…… typedef union { unsigned char status; bit bits[8]; }DeviceStatus; 但是编译器不喜欢这个。 显然你不能在结构中使用位。 那我该怎么做呢?

位移是否会自动将字符提升为int?

我在某处读到按位移位会自动将操作数转换为int。 但是我不确定该语句是否应该用“如果操作数是不相等的类型”来限定。 char one = 1, bitsInType = 8; one << (bitsInType – one); 第二行的默认结果是否导致int或char?

C – 在两个数字之间切换一下

我刚试过这段代码: void swapBit(unsigned char* numbA, unsigned char* numbB, short bitPosition)//bitPosition 0-x { unsigned char oneShift = 1 << bitPosition; unsigned char bitA = *numbA & oneShift; unsigned char bitB = *numbB & oneShift; if (bitA) *numbB |= bitA; else *numbB &= (~bitA ^ oneShift); if (bitB) *numbA |= bitB; else *numbA &= (~bitB ^ oneShift); […]

sizeof和一个字节大于8位?

由于sizeof是一个运算符,为什么我们可以使用sizeof(something); 喜欢函数调用? 什么时候字节不是8位? 此上下文中的字节与unsigned char相同,可能大于8位 是否有可能该字节小于8位?

C中任何整数的旋转位

将整数2传递给此函数,然后返回一个4的整数 x = 2; x = rotateInt(‘L’, x, 1); (左移位数为1) 示例:00000010 – >向左旋转1 – > 00000100 但如果我通过这个: x = rotateInt(‘R’, x, 3); 它将返回64,010000 这是代码,有人可以纠正错误…谢谢 int rotateInt(char direction, unsigned int x, int y) { unsigned int mask = 0; int num = 0, result = 0; int i; for (i = 0; i > 1; } […]