1樓:堅鶯南宮冬雁
有符號的數在記憶體中
以補碼形式存放
(即為對應的正數
取反加一)
例如:chara=
-3在記憶體中的存法如下:
對應的正數是3,二進位制為:0000
0011,取反為:1111
1100,加一為:1111
1101
你的問題反過來算就行(減一取反,再填一個負號):
c=100,第一位為:1說明是負數,減一:011,取反:100(化成十進位制為4),填負號:-4
b=11,第一位為:1說明是負數,減一:10,取反:01(化成十進位制為1),填負號:-1
2樓:
因為4bit最多隻能表示2的4次方的數(從0開始),所以最大值只能是0到15的16個值。如果賦值大於16,結果就會是整除16的結果。如改為16,=0;改為17,=1;改為32,=0,改為33,=1,改為34,=2。
(高位被丟失的原因。)
3樓:北風微風
因為你只給c宣告瞭4位,能表示的最大的數是15,賦給它16時溢位,所以結果為0。
4樓:匿名使用者
bit定義太小。。為2的4次方
即 0000
c=1111(2進位制)=15(10)
16時變成10000 有溢位……
c語言位運算問題,c語言 位運算問題??
你好,請問你怎麼知道是帶入的後面的來進行運算?include include int main 如果您是推斷的話,輸出結果為兩個0xffffffff,說明您給的推斷不正確。 int a 1 這是有符號數,vc 編譯器處理為 long int a unsigned char a 0377 轉為無符號數...
C 位運算速度問題,c語言位運算問題?
位運算速度很快。所以,可以用移1位代替乘2或除2,省時。編譯後的程式都是機內數,機內碼,都是2進位制,不用自己操心。target a 6 a 6 屬於定址計算,按a的地址,加 6 sizeof int 把這個地址裡的數賦到target的地址裡。for r 0 loop 1 r 這裡有分號,也就是迴圈體...
c語言問題以下程式段中與語句,C語言問題。以下程式段中與語句K a b (b c 1 0) 0 功能等價的是()
if a b k 1 else if b c k 1 else if a c k 1 else k 0。選d。問號表示式 表示式1 表示式2 表示式3 如果表示式1成立則執行表示式2,否則執行表示式3。注意事項 問號表示式是從右向左執行 例如 int a 8,b 3,c 7 printf d a b...