对于下面的值,写出变量x的C语言表达式.代码应该对任何字长w≥8都能工作.我们给出当x=0x87654321以及w=32时表达式的结果,仅供参考. A.x的最低有效字节,其他位均为0.[0x00000021]. B.除了x的最低有效字节外,其他位都取补,最低有效字节保持不变.[0x789ABC21]. C.x的最低有效字节设置成全1,其他字节都保持不变.[0x876543FF]. 解答: A. x & 0xFF B. ~(x ^ 0xFF)或者x ^ (~0xFF) C. x | 0xFF…
在2.10中的inplace_swap函数的基础上,你决定写一段代码,实现将一个数组中的元素两端依次对调,你写出下面这个函数: void reverse_array(int a[], int cnt) { int first, last; , last = cnt - ; first <= last; first ++, last --) { inplace_swap(&a[first], &a[last]); } } 当对一个数组包含1.2.3.4时,得到预期的结果4.3.2.1.…
T2Uw(w)=x, x≥0时 T2Uw(w)=x+2w, x<0时 利用上面的公式,重新计算2.19的问题.…
在2.17的基础上完成下表: x 十六进制 T2U(x) -8 0x8 -3 0xD -2 0xE -1 0xF 0 0x0 5 0x5…
将32位补码表示的数转换为10进制数. 32位补码 十进制 0x1b8 0x14 0xFFFFFE58 -424 0xFFFFFE74 -396 0x44 0xFFFFFEC8 -312 0x10 0xC 0xFFFFFEEC -276 0x20…
假设w=4,我们能给每个可能的十六进制数字赋予一个数值,假设用一个无符号或者补码表示.完成下表: x 无符号(B2U(x)) 补码(B2T(x)) 十六进制 二进制 0xE 1110 14 -2 0x0 0x5 0x8 -8 0xD -3 0xF -1…
填写下表,说明不同移位运算对单字节数的影响. x x<<3 x>>2(逻辑) x>>2(算术) 十六进制 二进制 二进制 十六进制 二进制 十六进制 二进制 十六进制 0xC3 1100 0011 0001 1000 0x18 0011 0000 0x30 1111 0000 0xF0 0x75 0111 0101 1010 1000 0xA8 0001 1101 0x1D 0001 1101 0x1D 0x87 1000 0111 0011 1000 0x38 001…
只使用位级运算和逻辑运算,编写一个C表达式,它等价于x==y.换句话说,当x和y相等时它将返回1,否则就返回0. !(x ^ y)…
假设x和y的字节值分别为0x66和0x39.填写下表,指明各个C表达式的字节值. 0x66 = 0110 0110(B) 0x39 = 0011 1001(B) 表达式 值 x & y 0x20 x | y 0x7F ~x | ~y 0xDF x & !y 0x00 x && y 0x01 x || y 0x01 !x || !y 0x00 x && ~y 0x01…
从20世纪70年代末到80年代末,Digital Equipment的VAX计算机是一种非常流行的机型.它没有布尔运算AND和OR指令,只有bis(位设置)和bic(位清除)这两种指令.两种指令的输入都是一个数据字x和一个掩码字m.它们生成一个结果z,z是由根据掩码m的位来修改x的位得到的.使用bis指令,这种修改就是在m为1的每个位置上,将z对应的位设置为1.使用bic指令,这种修改就是在m为1的每个位置,将z对应的位设置为0. 只使用这两个函数实现C语言的按位|和^运算. int bis(i…