成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

來,想一下:x/2 在什么時候不等于 x>>1?

開發 前端
在C語言標準中,沒有要求有符號整數的內部表示為2的補碼。在計算機中,對于一個正數會有一個統一的表示法,但如果這個數字是一個負數,則它可以有不同的表示。如果 x 是一個負數,那么,x * 2 和 x << 1 在符號/量級系統上完全不同。

地球人都知道,在計算機的世界,乘法和除法可以使用移位來實現,例如下面的兩條等式:x * 2 ≡ x << 1x / 2 ≡ x >> 1

但實際上,有時候事情并不是你想的那樣。在C語言標準中,沒有要求有符號整數的內部表示為2的補碼。在計算機中,對于一個正數會有一個統一的表示法,但如果這個數字是一個負數,則它可以有不同的表示。如果 x 是一個負數,那么,x * 2 和 x << 1 在符號/量級系統上完全不同。

但是,Win32 需要執行在一臺基于二進制補碼的硬件系統上,在這種情況下,第一個等價 x * 2 ≡ x << 1 確實總是正確的。當然,編譯器可以自由地識別這一點,并重寫你的乘法或移位運算。 事實上,它很可能這樣做,因為 x + x 比乘法或移位更容易配對。 移位操作或乘以二可能會被重寫為更接近 add eax,eax 指令的東西。 至于第二個所謂的等價式,C 語言規范最初沒有規定負數除以正數是四舍五入還是四舍五入為零,但在1999年,規范被修訂為要求四舍五入到零。 此外,未指定負值右移的結果,因此如果 x 為負值,表達式 x >> 1 具有未指定的結果。

即使你假設移位用符號位填充,如果 x 為負數,移位和除法的結果也不同。

(-1) / 2 ≡ 0(-1) >> 1 ≡ -1

這個故事的寓意

如果你想做什么,就請明確地告訴編譯器我要做什么。如果要你想除以2,請寫”/2″,而不是”>>1″。

總結

我一直沒弄明白移位的細節,總是需要用到的時候,拿出一張紙,用筆來畫出移位的示意圖。我的大腦,還是比不過你CPU啊。那本<<深入理解計算機系統>>,我還得再拿出來讀讀。

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2017-06-29 08:45:06

MySQLNOT INNOT EXISTS

2012-02-03 14:39:12

Java

2025-06-04 03:25:00

Java浮點數數學缺陷

2015-08-12 10:04:24

2021-09-06 15:29:16

大數據防疫信息安全

2010-04-28 14:38:26

云計算

2010-10-18 10:51:00

蘋果

2023-06-02 13:53:56

2023-11-08 13:32:00

JavaScript浮點數計算

2010-08-25 17:56:23

N+XUPS

2023-02-14 07:31:30

ARMx86蘋果

2010-07-19 11:12:43

Perl 不等于

2011-08-08 09:59:35

Android

2023-03-07 07:45:28

2015-12-01 10:42:07

2021-10-05 20:59:25

console日志正則

2019-08-27 08:43:15

2013-11-26 09:55:12

2020-05-12 11:25:50

MySQLES數據庫

2017-05-15 09:55:07

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91视频日本| 中文字幕人成乱码在线观看 | 欧美精品久久久 | 久久久久久高潮国产精品视 | 久久久精彩视频 | 少妇一级淫片免费播放 | 欧美日韩一| av网站推荐 | 日韩欧美网 | 日本电影免费完整观看 | 久久99久久99久久 | 日韩不卡一区二区三区 | 亚洲男人天堂2024 | 欧美日韩在线免费观看 | 在线黄色网 | 亚洲天堂一区二区 | 中文字幕免费在线 | 久久成人高清视频 | 欧美久久久网站 | 国产伦精品一区二区三区精品视频 | 亚洲乱码国产乱码精品精98午夜 | 国产成人综合在线 | 久久久青草婷婷精品综合日韩 | 国产日韩欧美一区 | 国产99久久久国产精品 | 国产高清在线 | 精品亚洲一区二区三区 | 国产真实精品久久二三区 | 国产亚洲一区二区三区在线观看 | 国产毛片久久久久久久久春天 | 综合久久亚洲 | 日韩中文一区二区 | 国产精品视频一二三区 | 国产精品久久久久久久久久久久久 | 国产欧美一区二区三区久久人妖 | 亚洲精品视频在线 | 国产人免费人成免费视频 | 精品三区 | 国产精品美女久久久久久久网站 | www.一级毛片 | 中国一级特黄真人毛片 |