簡體   English   中英

這個按位左移是做什么的?

[英]What is this bitwise shift left doing?

我正在研究幾年前編寫的其他人的代碼,該代碼非常糟糕。 某一時刻有以下代碼片段:

#define BINARYPOINT 16
....
float x;
int y;
int z;
....
....
//x has new values now
y = (int) (x*(1<<BINARYPOINT));
z = arctan2(y);
x = z;

在代碼y中明確使用了y來計算其反正切,函數arctan接受一個int並給出它的反正切,這是另一個int。 現在我的麻煩就在這里,我不知道如何計算x*(1<<BINARYPOINT)的反正切值會給我x的反正切值?

有人可以解釋一下這是怎么回事嗎?

非常感謝。

該代碼正在執行Binary Scaling 浮點數將轉換為B16二進制標度的整數表示形式,然后調用函數arctan2 這是一個帶有整數參數的例程,並且知道它正在使用B16比例因子。 並不是接受double參數的標准atan調用。

請注意,函數名稱arctan2使它看起來像是arctan的兩個參數版本,因此您應該檢查一下並確保進行正確的調用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM