1樓:匿名使用者
我以前也沒怎麼搞明白,順便自己研究了下,大家共同進步哈!
(int佔4位元組的情況計算出得結果是一樣的)
1.方法
先轉換成對應的2進位制(int型在計算機中是4位元組,這裡以2位元組位例,具體佔自己數看計算機)
2.具體步驟
00000000 00001101(13對應的2進位制)
11111111 11110010 (取反)
11111111 11001000 (左移2位,這個是計算機中儲存的真實內容)
3.關於計算機的儲存(補碼):
在計算機系統中,數值一律用補碼來表示(儲存)。
主要原因:使用補碼,可以將符號位和其它位統一處理;同時,減法也可按加法來處理。另外,兩個用補碼錶示的數相加時,如果最高位(符號位)有進位,則進位被捨棄。
(1)如果補碼的符號位為「0」,表示是一個正數,所以補碼就是該數的原碼。
(2)如果補碼的符號位為「1」,表示是一個負數,求原碼的操作可以是:符號位為1,其餘各位取反,然後再整個數加1。
因為上述結果首位為1,所以是個負數。他的原碼(即真實值)是首位不變,其他位取反再加1
取反:10000000 00110111
加1:10000000 00111000(左邊1是符號位,1表示為負,111000轉換成10進位制就是-56)
所以答案是-56
(我覺得補碼的原因,因為有符號位。1000 和0000那是表示+0和-0,計算時會引起混亂)
2樓:3路河口下
13取反:11110010
後左移2位:11001000
c語言裡 0*13^0*17這個表示式的值是多少,什麼意思,怎麼算的
3樓:禾勹彐心
^ -----按位異或(xor)是一種可逆運算子,只有在兩個比較的位不同時其結果是1,否則結果為0。因此在計算時應先將數值轉為二進位制,進行位比較,然後把所得的結果轉換為原來的進位制數。如下例:
3^ 5 =011 ^ 101=110 =6。所以你上面表示式是0^0=0.
4樓:曼寒
0,先計算13^0,然後再相乘。
c語言問題 int a 210,20,30,40,50,60p p a則p 2 1 的值為多少
結果60 指標p指向的是0號行,也就是a 0 p 2 a 2 p 2 1 a 2 1 p 2 1 對應陣列元素a 2 1 因此值為 60。我也看不懂,誰來講講啊?c語言的問題 int a 3 4 1,2,3,4,5,6,7,8,9,10,11,12 int p 4 p a 因為p 0 和p 1 分別...
簡單的C語言問題,一個簡單的C語言問題
列舉型別中,後面變數值是前面變數的值加1 如basic 3,則assembly 4 同樣 ada 100,則cobol 101,fortran 102 如果一個值沒有給定,就是它前一個變數值 1,ada 100,所以cobol 101,fortran 102 不完整。像是定義一個列舉變數並賦值。1。...
c語言簡單問題
可以檢視msdn srand 是初始化一個種子,就是說隨機數是從哪個數開始,常以系統內時間來初始化,即 srand unsigned time null randomize 是vbscript or pascal中的函式,容也是初始化的作用,預設是以系統時間為種子的,這是delphi help中的解...