❶ 一道c语言题目: 设有无符号短整型变量i、j、k,i值为013,j值为0x13。
答案是D;
因为:i,j,k是无符号短整型数,应该占两字节,而你只用了一个字节,当然结果是不对了
其中:~i = 11111111 11110100,其他也是一样的错误,以16位二进制来算,就对了
❷ C语言题目求详细解答 表达式~0x13的值是 A.0xFFEC B.0xFF71 C.0xFF68 D.0xFF17
这道题要求什么,为什么要取反?正数的补码和原码是一致的。
❸ 关于C语言
应该是Ox13|Ox17=Ox17
(我记得 | 表示 按位或 ,要是记错了,请见谅。)
Ox13化为二进制是 00010011
Ox17化为二进制是 00010111
而 | 应是按位进行 或运算 ,当然是在二进制中。
所以,把这两个是每位进行 或运算 ,可以得到结果:00010111
化回十六进制,就是 Ox17 。
附:或运算 计算方法
1 | 1 = 1
1 | 0 = 1
0 | 1 = 1
0 | 0 = 0
❹ C语言题目求详细解答 表达式~0x13的值是 A.0xFFEC B.0xFF71 C.0xFF68 D.0xFF17
0x是16进制的数字
0x13换算成二进制数是:10011
把10011补齐是:0000 0000 0001 0011
然后按位取反是:1111 1111 1110 1100(此慧呵呵森亏答,按位取反就是同一位上的0变1,1变0)空哪
换算成16进制: F F E C
所以:选择 A
❺ C语言表达式问题
k=i||j>>3;
按运算符优先级分解后为:>>优先级高于|优先毁稿级高于||优先级高于=
short m = j>>3;
k = (i||m);
前面的同志说的道理物弊很在正确
013是八进制13,对应二进制是00001011
0x13是十六进制13,对应二进制是00010011,C中右移三位后是00000010, java中右移三位后是11100010
(i||m)系统先判断i的值是否为真,是就返回true,不是继续判断m是否为真,如果是返回true,不是返回false.所以k的值只有两个true,或者false.在很多编译器里,ture对应为1(不是绝对的,不同的编译器不同),false对应0.所以这道题k的值为1.你可以调试:
#include<iostream>
using namespace std;
int main()
{
short i=013,j=0x13;
short k;
k=i||j>>3;
printf("%d",k);
return 0;
}
当然依此类推k=i|j>>3;时,k的值为纤蚂孝00001011 即013
❻ 求解C语言问题
0x13是兆侍一个int型,它是32bit的数据,写成二进制是00000000 00000000 00000000 00010011。~表示对这个数据按位取反,取反后的结族扮吵果是11111111 11111111 11111111 11101100。这个结果表示成16进制是0xFFFFFFEC。缺困
❼ C语言位运算求解
0x13转换成二进制就是慧拿00010011
0x17转换成二谈手进制就是00010111
两个数字做异或运算,就是0^0=0,
1^1=0,
0^1=1,
1^0=1异或你可以理解为每一个位都不进位的加法
结果就是0000
0100于是含碧嫌就是0x04了