[問題] signed to unsigned轉換

看板C_and_CPP作者 (QQ)時間9年前 (2014/09/23 14:09), 編輯推噓3(306)
留言9則, 6人參與, 最新討論串1/1
遇到了一個與自己直覺相異的問題 有一個12bit的signed int經過 filter後要轉回unsigned int 我的直覺是把signed int加上2048即可 但看到的資料好像不一定可以這樣做 想請問有什麼狀況是不能這樣加2048就轉回unsigned嗎? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.75.63.71 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1411452593.A.F45.html

09/23 15:11, , 1F
signed integer overflow causes undefined behavior?
09/23 15:11, 1F

09/23 15:27, , 2F
signed -> unsigned 好像會 mod 那個 unsigned+1?
09/23 15:27, 2F

09/23 16:58, , 3F
我記得是undefined behavior 不過每家行為都一樣
09/23 16:58, 3F

09/23 17:37, , 4F
要看你怎麼寫耶.. 如果你是先轉型 unsigned 再加
09/23 17:37, 4F

09/23 17:37, , 5F
那就不會 undefined behavior 了
09/23 17:37, 5F

09/23 17:38, , 6F
而實際經驗的話.. 沒有用過12bits的int,所以沒有經驗XD
09/23 17:38, 6F

09/24 08:46, , 7F
我目前懷疑是要避免overflow,只是不知道該如何驗證
09/24 08:46, 7F

09/24 20:17, , 8F
基本上要看那個 signed 是何種表示法; 二補數可以這麼做
09/24 20:17, 8F

09/24 20:18, , 9F
一補數或 sign-magnitude 的話則不行
09/24 20:18, 9F
文章代碼(AID): #1K8Gwnz5 (C_and_CPP)