Tag: 64

用64位int移位

我有一个__int64变量x = 0x8000000000000000 。 我尝试按字节顺序移动: x >> 4 我认为结果应该是0x0800000000000000 ,但不幸的是我得到0xf800000000000000 。 我用VS10。 为什么会这样? 我该如何解决?

uint64_t变量中C的按位移位运算

我有以下示例代码: uint64_t x, y; x = ~(0xF<<24); y = ~(0xFF<<24); 结果将是: x=0xfffffffff0ffffff y=0xfffff 有人可以解释这个区别吗? 为什么x计算超过64位而y仅计算在32位?

Endian表示64位值

假设我unsigned long long x = 0x0123456789ABCDEF 。 以下哪项是正确的? (我只能validation第一个): 在32位小端处理器上,它将在内存中显示为67 45 23 01 EF CD AB 89 。 在64位小端处理器上,它将作为EF CD AB 89 67 45 23 01出现在内存中。 在32位大端处理器上,它将在内存中显示为01 23 45 67 89 AB CD EF 。 在64位大端处理器上,它将在内存中显示为01 23 45 67 89 AB CD EF 。

跟踪位操作的优化机会?

你觉得函数haswon有优化的余地吗(见下文)? 我认识到将参数类型从__int64更改为unsigned __int64使得函数更快,因此我可能仍然有机会进行优化。 更详细:我正在写一个连接四游戏。 最近我使用了Profiler Very Sleepy,并认识到函数haswon使用了大部分的cpu-time。 该function使用连接四板的位板表示给一个玩家。 我在fourstones基准测试的源头找到了这个function。 位板表示如下: . . . . . . . TOP 5 12 19 26 33 40 47 4 11 18 25 32 39 46 3 10 17 24 31 38 45 2 9 16 23 30 37 44 1 8 15 22 29 36 43 0 7 […]

获取64位整数内的位位数组

好吧,听起来有点复杂,但这正是我想要做的: 以10101010101为例 并返回{ 0, 2, 4, 6, 8, 10 } – 一个数组,其中包含所有位的位置 这是我的代码: UINT DQBitboard::firstBit(U64 bitboard) { static const int index64[64] = { 63, 0, 58, 1, 59, 47, 53, 2, 60, 39, 48, 27, 54, 33, 42, 3, 61, 51, 37, 40, 49, 18, 28, 20, 55, 30, 34, 11, 43, 14, 22, 4, […]

C左移64位失败

我在C中有这个代码(仅供学习): char x; uint64_t total = 0; for(x = 20; x < 30; x++){ total = (((((1 << x) * x) / 64) + 1) * sizeof(uint64_t)); printf("%d – %llu\n", x, total); } 什么是印刷品: 20 – 2621448 21 – 5505032 22 – 11534344 23 – 24117256 24 – 50331656 25 – 104857608 26 – 218103816 […]