C語言位段的問題

時間 2022-06-18 05:30:08

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...