程式語言運算子題目:A=0x93 ,B=0x55

請問各位大大,有人會解答嗎?實在抱歉,我程度不好,完全看不懂

程式語言運算子題目:A=0x93 ,B=0x55
2023-08-07 15:30 發佈
kalinka520 wrote:
請問各位大大,有人會...(恕刪)


A=0x93
實際上A轉成十進制應該是147
至於那個-109應該是byte的表示方式127~-128 (轉2進制高位前面為1等於負值)


不理會其他的,把他當16進制或是10進制看待
0x93 - 0x55 = 0x3E
0x3E(16進制) = 62(10進制)
A為何是-109是我不懂的地方

CcCManCcC wrote:
A=0x93實際上A...(恕刪)
1tac

搜尋"2補數",-109的2補數是147(0x93)

2023-08-07 16:27
kalinka520 wrote:
A為何是-109是我...(恕刪)


哈,上面說了,二補數
和我一般算進位的不同......

原來是這樣
kalinka520 wrote:
A為何是-109是我不懂的地方

A是0x93,如果用10進制表示是147,但是147已經超出它定義的-128~127,所以0x93應該是負值,把147-256=-109 (1個byte=256)
魚與熊掌不可兼得,小孩子才做選擇。 我. 全. 都. 要.
位元裡面, 第一個位元 代表 正負號使用
0x 93 = 10010011
由於第一位元為 (1) , 因此代表為負數
要計算數字是 負多少時 ,就要用二補數的方式 ,
也就是 , 整個資料完全相反之後 ,再+1
10010011 -> 01101100 , 再加 1 -> 01101101
十進制來看 , 就是 109 , 所以 數字就是 - 109
---------------------------------
另外一種 , 就是樓上的說法 ,
不看正負號時 , 數字超過 127 , 所以 要 - 256
-----------------------------------
從程式設計的角度來看
一個整數 , 可以定義為 undesigned , 也就是第一個位元不當正負號 ,
直接當作數字 , 所以數字的範圍就是 0~255

如果第一位元當作正負號 ,那就是 -128~ +127

以上是 8位元的部份, 16位元以此類推
-32768 ~ +32767
或 0~ 65535
所以一些遊戲早期會有一些 Bug , 或者是數字上限,
都是這個因素

像是瑪莉兄弟 生命值超過 127 , 生命就會變成負數
程式沒寫好, 造成溢位 , 正數變成負數

32位元的上限是 2147483647
所以有些遊戲,金幣的上限就會是這個數字,
舉例魔獸世界早期的金幣上限就是 214748金 36銀 47銅
你好:請你參考。

C=A-B
0x93-0x55=0x3D

個位數16-5+3=14,換算16進制為D
十位數8-5=3
所以答案=0x3D 換算10進制=62
好久沒複習了,小弟練習一下

以下問題皆用二進位計算

A = 0x93 = 10010011b
B = 0x55 = 01010101b
1.) C = A + B

10010011b
+ 01010101b
-----------------
11101000b (0xE8) Bit7為正負號表示位元,所以需要做2's 計算( 反向後在加1)
所以 11101000b 反向後為 00010111b,再加上1為 00011000b = (-)16+8 = -24

2.) C = A - B

以計算機減法運算為 A + (-)B,代表B要做2's 處理

10010011b
+ 10101011b
-----------------
1 00111110b (溢位忽略不計)
所以答案為 32+16+8+4+2 = 62
內文搜尋
X
評分
評分
複製連結
Mobile01提醒您
您目前瀏覽的是行動版網頁
是否切換到電腦版網頁呢?