Makro Int64ShraMod32 (winnt.h)

Melakukan operasi pergeseran aritmatika yang tepat pada nilai bilangan bulat 64-bit yang ditandatangani. Fungsi ini menyediakan kode pergeseran yang ditingkatkan untuk pergeseran aritmatika yang tepat di mana jumlah shift berada dalam rentang 0-31.

Sintaks

void Int64ShraMod32(
  [in]  a,
  [in]  b
);

Parameter

[in] a

Bilangan bulat 64-bit yang ditandatangani akan digeser.

[in] b

Jumlah shift dalam rentang 0-31.

Mengembalikan nilai

Tidak ada

Keterangan

Jumlah shift adalah jumlah posisi bit yang dipindahkan bit nilai.

Dalam operasi pergeseran aritmatika kanan pada nilai yang ditandatangani, bit nilai berpindah ke kanan, dan bit kosong di sisi kiri nilai diatur ke nilai bit tanda.

Pengkompilasi dapat menghasilkan kode optimal untuk operasi pergeseran aritmatika yang tepat ketika jumlah shift adalah konstanta. Namun, jika jumlah shift adalah variabel yang rentang nilainya tidak diketahui, kompilator harus mengasumsikan kasus terburuk, yang mengarah ke kode yang tidak optimal: kode yang memanggil subroutine, atau kode yang sebaris tetapi cabang. Dengan membatasi jumlah shift ke rentang 0-31, fungsi Int64ShraMod32 memungkinkan kompilator menghasilkan kode optimal atau hampir optimal.

Harap dicatat bahwa parameter Nilai fungsi Int64ShraMod32 dan nilai yang dikembalikan adalah nilai 64-bit, bukan struktur LARGE_INTEGER.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows XP [aplikasi desktop | Aplikasi UWP]
Server minimum yang didukung Windows Server 2003 [aplikasi desktop | Aplikasi UWP]
Target Platform Windows
Header winnt.h (termasuk Windows.h)

Lihat juga

Int64ShllMod32

Int64ShrlMod32

Bilangan Bulat Besar