有人能解釋一下maxBit是什么嗎?

我試圖理解下面的maxBit是什么,它代表什么?

當我打印最小值和最大值時,我得到的數字對我來說毫無意義。

Thank you.

#include <stdio.h>
#include <math.h>

int main() {
union {double a; size_t b;} u; 
u.a = 12345; 
size_t max = u.b; 
u.a = 6; 
size_t min = u.b;
int maxBit = floor(log(max-min) / log(2));
printf("%d",maxBit);
return 0;
}
? 最佳回答:

這段代碼似乎使用了一個可怕的代碼。關于容忍使用編譯器擴展或其他超出C標準的代碼,我是這里比較受歡迎的參與者之一,但是這段代碼只是做一些不必要的事情,并沒有明顯的好處。它依賴于size_t是64位。在某些特定的C實現中,它可能是64位的,但這是不可移植的,使用64位的C實現通常是現代的,現代實現應該支持<stdint.h>uint64_t,這是一種合適的類型。所以更好的代碼應該使用uint64_t

除非代碼中存在一些令人驚訝的動機,否則它就是低質量的、糟糕的代碼。不要使用它,并對來自同一源代碼持懷疑態度。

也就是說,代碼可能假設IEEE-754二進制64用于double,而max-min給出了12345和6的表示之間的區別。log(max-min) / log(2)找到max-min的base-two-logarithm,其整數部分將是更改的最高位的索引。對于12345,指數字段為140。對于6,指數字段為129。差值為11,其中第一位是字段的第3位(23=8)。該字段從第62位到第52位,因此指數字段中的第3位是表示的整個64位中的第55位。所以麥克斯比特就55歲了。然而,這并沒有明顯的意義。知道比特55是12345和6的表示之間的差異中的最高比特集合沒有什么大價值。我熟悉各種IEEE-754bit-twiddling黑客,我不認識這些。我希望沒有人能夠在沒有上下文的情況下告訴你更多關于這方面的信息,比如代碼來自何處或如何使用它。

主站蜘蛛池模板: 亚洲视频在线一区二区三区| 久久se精品一区二区| 中文字幕精品一区二区三区视频| 亚洲av无码一区二区三区四区| 无码精品一区二区三区| 波多野结衣中文一区| 久久亚洲色一区二区三区| 熟女大屁股白浆一区二区| 亚洲av成人一区二区三区| 91秒拍国产福利一区| 在线观看国产一区亚洲bd| 中文字幕一精品亚洲无线一区| 亚洲国产视频一区| 无码精品人妻一区二区三区AV| 精品久久久久中文字幕一区| 亚洲一区中文字幕| 国产精品高清一区二区三区 | 一区二区免费电影| 国产精品综合AV一区二区国产馆| 久久一区二区免费播放| 国产伦精品一区二区三区女| 国产对白精品刺激一区二区| 末成年女AV片一区二区| 国产一区二区三区在线2021| 一区二区三区中文字幕| 激情无码亚洲一区二区三区| 亚洲日韩国产精品第一页一区| 福利片福利一区二区三区| 日韩高清一区二区三区不卡| 精品人妻无码一区二区三区蜜桃一 | 日本不卡一区二区三区| 国产亚洲一区二区三区在线不卡| 国产精品第一区揄拍| 亚洲av午夜福利精品一区| 人妻内射一区二区在线视频| 亚洲日韩国产一区二区三区 | 无码毛片视频一区二区本码| 人妻无码久久一区二区三区免费 | 精品乱码一区内射人妻无码| 精品视频在线观看一区二区| 成人区精品一区二区不卡|