zoukankan      html  css  js  c++  java
  • 一种获取无符号整数最大值的方法:

    //一种获取无符号整数最大值的方法:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      {Delphi 标准的无符号整数类型只有三种}
      num_Byte     : Byte;
      num_Word     : Word;
      num_Cardinal : Cardinal;
    
      {Windows API 中相应的类型就太多了, 下面是随便找了几种}
      api_UCHAR    : UCHAR;    {Byte}
      api_LANGID   : LANGID;   {Word}
      api_DWORD    : DWORD;    {Cardinal}
      api_LongWord : LongWord; {Cardinal}
      api_UINT     : UINT;     {Cardinal}
      api_THandle  : THandle;  {Cardinal}
      api_HWND     : HWND;     {Cardinal}
    begin
      num_Byte     := Byte(-1);     ShowMessage(IntToStr(num_Byte));     {255}
      num_Word     := Word(-1);     ShowMessage(IntToStr(num_Word));     {65535}
      num_Cardinal := Cardinal(-1); ShowMessage(IntToStr(num_Cardinal)); {4294967295}
    
      api_UCHAR    := UCHAR(-1);    ShowMessage(IntToStr(api_UCHAR));    {255}
      api_LANGID   := LANGID(-1);   ShowMessage(IntToStr(api_LANGID));   {65535}
      api_DWORD    := DWORD(-1);    ShowMessage(IntToStr(api_DWORD));    {4294967295}
      api_LongWord := LongWord(-1); ShowMessage(IntToStr(api_LongWord)); {4294967295}
      api_UINT     := UINT(-1);     ShowMessage(IntToStr(api_UINT));     {4294967295}
      api_THandle  := THandle(-1);  ShowMessage(IntToStr(api_THandle));  {4294967295}
      api_HWND     := HWND(-1);     ShowMessage(IntToStr(api_HWND));     {4294967295}
    end;
    
    简单分析: 譬如 Word 是两字节 16 位的, 它最大值的二进制表示是: 11111111 11111111; 假如它能表示 -1, 负数的算法是: 反码 + 1: 1 的二进制是: 00000000 00000001; 1 的反码是 : 11111111 11111110 补 1 后是 : 11111111 11111111 Word 没有负数, 当然 11111111 11111111 就是它的最大值了.
  • 相关阅读:
    net 面试题
    Entity Framework Core 三条引用三条命令
    软件开发模型设计
    Mysql局域网共享
    基于WinForm,百度ai接口开发的人脸识别
    WinForm创建
    SQLite Encryption(加密)新姿势
    WPF-MenuItem只显示最后一个Icon
    《深入浅出WPF》-刘铁猛学习笔记——XAML
    为什么你的问题群里没人回答?这就是原因!
  • 原文地址:https://www.cnblogs.com/del/p/1070513.html
Copyright © 2011-2022 走看看