gpt4 book ai didi

c# - 扑克 watch 示和评估

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:17:08 26 4
gpt4 key购买 nike

一副扑克牌是 52 张牌
13阶4花色

致力于高效的手部表示和评估

A    K    Q    J    T    9    8    7    6    5    4    3    2
scdh scdh scdh scdh scdh scdh scdh scdh scdh scdh scdh scdh scdh

52 位

As, Ac, Qs Qh, 8s, 7s 6s

A    K    Q    J    T    9    8    7    6    5    4    3    2
scdh scdh scdh scdh scdh scdh scdh scdh scdh scdh scdh scdh scdh
1 1 1 1 1 1 1

突破9卡36位
到最后一组都没问题

byte s = 1;

UInt16 spades4 = (UInt16)((s << 12) + (s << 8) + (s << 4) + (s & 0xff));
Debug.WriteLine("Hexadecimal value of {0} is {1} {2}", spades4, String.Format("{0:X}", spades4), Convert.ToString(spades4, 2).PadLeft(16, '0'));
Debug.WriteLine("");

UInt32 spades8 = (UInt32)((s << 28) + (s << 24) + (s << 20) + (s << 16) + (s << 12) + (s << 8) + (s << 4) + (s & 0xff));
Debug.WriteLine("Hexadecimal value of {0} is {1} {2}", spades8, String.Format("{0:X}", spades8), Convert.ToString(spades8, 2).PadLeft(32, '0'));
Debug.WriteLine("");

Int64 spades9 = (Int64)( (s << 30) + (s << 28) + (s << 24) + (s << 20) + (s << 16) + (s << 12) + (s << 8) + (s << 4) + (s & 0xff));
Debug.WriteLine("Hexadecimal value of {0} is {1} {2}", spades9, String.Format("{0:X}", spades9), Convert.ToString(spades9, 2).PadLeft(36, '0'));
Debug.WriteLine("");

// once the shift is up to 31 it breaks - it goes negative
Int64 spades9b = (Int64)((Int64)(s << 31) + (Int64)(s << 28) + (Int64)(s << 24) + (Int64)(s << 20) + (Int64)(s << 16) + (Int64)(s << 12) + (Int64)(s << 8) + (Int64)(s << 4) + (Int64)(s & 0xff));
Debug.WriteLine("Hexadecimal value of {0} is {1} {2}", spades9b, String.Format("{0:X}", spades9b), Convert.ToString(spades9b, 2).PadLeft(36, '0'));
Debug.WriteLine("");

我试过 UInt64 和同样的问题

我认为这是解决办法
不知道我应该删除还是保留它

Int64 spades9b = (Int64)(((Int64)s << 44) | ((Int64)s << 40) | ((Int64)s << 36) | ((Int64)s << 32) | (Int64)(s << 28) | (Int64)(s << 24) | (Int64)(s << 20) | (Int64)(s << 16) | (Int64)(s << 12) | (Int64)(s << 8) | (Int64)(s << 4) | (Int64)(s & 0xff));
Debug.WriteLine("Hexadecimal value of {0} is {1} {2}", spades9b, String.Format("{0:X}", spades9b), Convert.ToString(spades9b, 2).PadLeft(48, '0'));

最佳答案

  1. 绝对使用 UInt64(用于所有内容,包括您未显示的 s)以及...
  2. 使用 | 而不是 + 因为它更适合按位运算。对于带符号的 Int64,+ 可能会给您带来一些问题,因为最大的正数是范围的一半。

一旦您完成了这两项操作,如果仍然存在问题,请发布您的新代码和输出结果。

关于c# - 扑克 watch 示和评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43193276/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com