❶ 一道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了