写了几个16位编译环境下64位计算的函数

小技巧1——长整型:64位整数的乘法模运算 以下讨论均基于C/C++。 1. 问题引入 最近做了几道有关数学的题目,然后要用到这些较大整数的乘法(比如说NOI 2018 屠龙勇士中1012101210^{12}级别的pipip_i相乘,还有直接上到1018101810^{18}级别的快速幂),这些在刚写代码的时候不容易想到问题,发现溢出了之后才想起这些数太大了。 这类问题虽然最终答案需要取模,但是当a,b,p≤1018a,b,p≤10... 阅读详情
typedef union {
    struct {
        U32 Low;
        U32 High;
    } u;
#if defined(DT64BSUPPORTED)
    _U64 Value;
#endif
} U64;

#define LOWORD(x)            ((unsigned short)(x & 0xFFFF))
#define HIWORD(x)            ((unsigned short)(x >> 16))
#define MAKEDWORD(h,l)        (((unsigned long)h << 16) | l)

// written by LIYUE
// result = a + b
void UADD64(unsigned long a, unsigned long b, U64 &result)
{
 unsigned long tmp = LOWORD(a) + LOWORD(b);
  unsigned short low  = LOWORD(tmp);
  unsigned short add  = HIWORD(tmp);
  unsigned long  high = HIWORD(a) + HIWORD(b) + add;

  result.u.High = HIWORD(high);
  result.u.Low = MAKEDWORD(LOWORD(high), low);
}

// written by LIYUE
// result = a + b
void UADD64(U64 a, U64 b, U64 &result)
{
  U64 low, high;
  UADD64(a.u.Low, b.u.Low, low);
  UADD64(a.u.High, b.u.High, high);

  result.u.Low = low.u.Low;
  result.u.High = low.u.High + high.u.Low;
}

// written by LIYUE
// result = a * b
void UMUL64(unsigned long a, unsigned long b, U64 &result)
{
  unsigned long al = LOWORD(a);
  unsigned long ah = HIWORD(a);
  unsigned long bl = LOWORD(b);
  unsigned long bh = HIWORD(b);

  U64 mul1, mul2;
  UADD64( al * bl, (al * bh) << 16, mul1 );
  UADD64( ah * bl, (ah * bh) << 16, mul2 );
  mul2.u.High = HIWORD(mul2.u.Low);
  mul2.u.Low = mul2.u.Low << 16;

  UADD64(mul1, mul2, result);
}

// written by LIYUE
void ShiftLeft(U32 &high, U32 &low)
{
  unsigned add = low & 0x80000000 ? 1 : 0;
  high = high << 1;
  high |= add;
  low = low << 1;
}

// written by LIYUE
void ShiftRight(U32 &high, U32 &low)
{
  unsigned long add = high & 1 ? 0x80000000 : 0;
  low = low >> 1;
  low |= add;
  high = high >> 1;
}

// written by LIYUE
void ShiftLeft(U32 &high, U32 &low, unsigned bits)
{
  for (unsigned i = 0; i < bits; i++)
    ShiftLeft(high, low);
}

// written by LIYUE
void ShiftRight(U32 &high, U32 &low, unsigned bits)
{
  for (unsigned i = 0; i < bits; i++)
    ShiftRight(high, low);
}

delphi 64位MD5算法 看到网上有人说indy的md5在64位下计算结果与32位下不一致。我测试了一下,确实如此,因此把自己用的64位计算结果正确的md5函数代码发出来。 说明1:这个单元的代码是从indy的md5代码修改而来的。 说明2:计算TBytes和String的MD5值可以使用TBytesStream或TStringStream。 说明3:计算结果转换为HEX字符的代码请自行编写。   unit Ba 阅读详情

相关推荐

silvaco——GaN HEMT探索

上图为输出特性曲线 ,分别是在栅压为1v、3v、5v的情况下,可以看出在1v时器件处于截止状态,只有非常小近似于0的电流通过,随着栅压逐渐增大,沟道开启,产生漏极电流。上图为栅极漏电流曲线和转移特性曲线以及其提取的参数,可以看到阈值电压为=1.30249V,当栅压为0v时,Id=8.01032e-006,当栅压为5V时,Ig=3.11627e-006。albrct.n,低场迁移率模型,bn.albrct,an.albrct是albrct模型中的参数,可以由用户自己设定。lat.temp,晶格自热模型;

weixin_61913839的博客 7617

ARM乘法指令与乘加指令

乘法指令与乘加指令 1.MUL          32位乘法指令 2.MLA          32位乘加指令 3.SMULL        64位有符号乘法指令 4.SMLAL        64位有符号乘加指令 5.UMULL        64位无符号乘法指令 6.UMLAL        64位无符号乘加指令

ASMARM的专栏 3231

GEO芯片数据下载和探针ID转换(保姆级教程)

R语言安装、GEO芯片数据下载、探针ID转换

qq_43138237的博客 3万+

C 语言printf打印各种数据类型的方法(u8/s8/u16/s16.../u64/double/float)(全)

首先必须知道u8,s8等数据类型的定义: typedef signed char s8; typedef unsigned char u8; typedef signed short s16; typedef unsigned short u16; typedef signed int s32; typedef unsigned int u32; typedef...

悟空明镜 10万+

DataWorks数据安全治理最佳实践

DataWorks基于数据安全治理的常见思路,针对资产梳理、技术体系建设和运营体系建设,提供了一系列数据安全产品能力,您可通过“基础防护建设、数据安全防护措施及策略增强建设、数据安全持续运营”三个阶段在DataWorks上落地数据安全治理项目。参考本文启动数据安全治理项目前,建议您先了解DataWorks数据安全产品相关能力了解DataWorks数据安全产品能力后,您可参考如下三个阶段在DataWorks上落地数据安全治理项目。

soso1968的博客 1438

【车载开发系列】ParaSoft单元测试环境配置(一)

bdf是数据文件的一种类型,表示一种数据库文件。在ParaSoft当中,可以使用bdf文件来快速创建一个测试项目。

千月星跡 2147

在单片机中, 64 位整数除以 32 位整数

在单片机中, 64 位整数除以 32 位整数, 因为没有64位寄存器, 所以需要自己实现 // 64 位除以 32 位 Longword _DivEx(Longword AHiVal, Longword ALoVal, Longword ADivisor, Longword& AHiRet, Longword* ARemainder = NULL) {

Kyee编程之道 3454

YOLOv8-pose姿态估计模型从训练到RK3588部署:让边缘端骨骼识别速度突破60FPS

本教程从“模型训练-转换-边缘部署”全链路拆解了YOLOv8-pose姿态估计方案在RK3588上的落地过程,每一步都经过实战验证。无论是智能健身的动作实时纠正,还是工业设备的关键部件姿态检测,这套流程都能让你以最低成本实现高精度、高实时性的姿态估计应用。如果你在实践中遇到模型转换报错、部署性能不达标等问题,可聚焦某一环节深入优化——毕竟,让AI在边缘端“精准捕捉每一个关键点”,才是技术驱动场景创新的核心。

know_F0727的博客 191

电脑32位和64位操作系统的区别

“位”,简单地理解就是CPU的寻址空间。在计算机技术的发展史上,位的演变起到了举足轻重的作用。从1971年的4位计算到如今已来临的64位计算时代,这中间经历了漫长的演变过程。 1978年,Intel推出了首颗16位CPU8086。在此期间内,操作系统走过了16位的PC-DOS、MS-DOS、CP/M-86、UCSD Pascal P-System。MS-DOS开始成为个人计算机操作系统的霸主,直到

wokaotesting 6771

2026年CSP-J初赛真题及答案解析

2026年CSP-J初赛真题及题解

王老师青少年编程 1628

【OpenClaw从入门到精通】第60篇:多智能体协同实战——用“龙虾”搭建你的数字员工团队(2026企业版)

2026年AI Agent企业落地的核心趋势,正从“单Agent单兵作战”转向“多智能体协同组网”。本文以全球开发者先锋大会“百虾大战”真实案例为蓝本,深度拆解OpenClaw多智能体协同的技术内核——三层解耦架构(模型层-技能层-网关层),系统搭建包含项目经理、架构师、执行者、质量把关者的4大核心Agent团队。通过三种主流协作架构对比、全链路配置代码实操、故障自愈实战演练,结合电商新品上架虚拟场景全流程演示,解决企业多Agent部署中的权限隔离、任务协同、运维自治三大核心痛点。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 769

64位版本为什么叫amd64,而不是intel64

今天有朋友问,为什么软件版本会注明 for amd64版本,不是intel64呢? X86 X86架构(The X86 architecture)是微处理器执行的计算机语言指令集,指一个intel通用计算机系列的标准编号缩写,也标识一套通用的计算机指令集合。 1978年6月8日,Intel发布了新款16位微处理器“8086”,也同时开创了一个新时代:x86架构诞生...

蓝叶菱的专栏 3万+

问题解答:如何不通过修改底层数据库表的方式,给数据库对应的数据结构,增添新的字段?

现在需要将这张表里的内容读取到 ABAP 内表里,并且针对每个行项目,增加一个新的列字段,我随便举个例子,这个列字段名称叫 LENGTH,值为 OBJ_NAME 字段的长度,使用。最笨的办法就是下面这样定义一个新的类型,这个类型的每个字段名称,都来自数据库表 TADIR 的同名字段,在末尾再增添自定义字段 length.其实我们是做 ALV 输出,只需要 ABAP 内表变量的类型,包含 TADIR 数据库表的全部字段,再加上新的 LENGTH 字段即可。这相当于多了一个中间层,没办法直接被 ALV 处理。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 481

C语言标准CRC-16校验函数

CRC-16校验产生2个字节长度的数据校验码,通过计算得到的校验码和获得的校验码比较,用于验证获得的数据的正确性。获得的校验码是随数据绑定获得。。这里介绍CRC-16的64位计算方式和简化的16位和8位计算方式。

Pegasus的软件博客 6382

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

android中64位手机,我们需要64位Android手机吗?

过去数月,多款新智能手机都把64位处理器作为卖点。用户应当购买一款配置64位处理器的手机吗?64位处理器的性能是32位处理器的2倍吗?这两个问题的答案是否定的。转向更新的ARM架构会带来性能的提升,但64位计算技术却不能。在用户购买首款64位Android手机(HTC Desire 510)前,或开始对将于今年秋季上市销售的64位手机“垂涎欲滴”前,本文将讨论64位计算技术的真正含义,以及用户需要...

weixin_42474537的博客 2028

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

32位和64位Windows有什么区别?

Whether shopping for a new computer or upgrading an old one, you’ve likely come across the the “64-bit” designation and wondered what it meant. Read on as we explain what Windows 64-bit is and why you...

729

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

64位技术 概述(从16位-32位-64位)

“位”,简单地理解就是CPU的寻址空间。在计算机技术的发展史上,位的演变起到了举足轻重的作用。从1971年的4位计算到如今已来临的64位计算时代,经历了漫长的演变过程。   1978——1995年:16位大行其道   1978年,Intel推出了首颗16位CPU——8086。 在此期间,操作系统走过了16位的PC-DOS、MS-DOS、CP/M-86、UCSD Pascal P-Syste

zhangxinrun的专栏 1781

时代的潮流64位势不可挡

人类计算经过了8位、16位、32位带宽,而今天终于可以跨出更大的一步——从32位到64位。2005年的处理器市场乃至整个IT业界,恐怕64位技术将成为最耀眼的技术。 回顾64位技术的历史,可看出其发展速度十分迅猛。从2003年 4月AMD推出64位技术至今,全球已有2000多家一流软硬件厂商推出了基于AMD64的产品,其中不乏IBM、惠普、Sun、富士通、西门子、曙光、 联想

iseeiconquer的专栏 1347

16位转8位 winhex_64位系统究竟强在哪里?

想必大家都遇到过这样的问题:安装某个软件的时候,出现提示选择32位版本还是64位版本?我们也可以查看自己的电脑是32位还是64位系统。WindowsLinux大家可能知道32位和64位和系统有关,但其实32 vs 64可以有多重含义。一般情况下,有以下几种可能:CPU、程序、操作系统。今天我来给大家一一介绍下!→_→CPU首先,我们要先从什么是位数讲起。计算机中的位数指的是CPU一次...

weixin_32949451的博客 291

计算机16位32位64位整数,从16位到32位再到64位,为何16年过去,依然没有128位系统出现?...

以下内容来源于互联网,版权归原作者所有。还记得你小时候那种大头显示器吗?当时,电脑并不流行,只有少数富人可以使用。即使如此,还是使用最原始的win98 xp 32位操作系统、128K拨号互联网,并且传输图片特别慢。在03年的时候,第一个“64位”系统出现,支持超过4G的内存。你为什么没有听说过“128位”操作系统?从计算机的发展来看,1978年到1995年,16位操作系统开始流行,1978年英特尔...

weixin_34379710的博客 1380

为什么64位计算机CPU架构叫amd64

1978 年 6 月,Intel 发布了新款 16 位微处理器 8086,开创了一个全新时代,x86 架构由此诞生。x86 架构指的是特定微处理器执行的计算机语言指令集,定义了芯片的基本使用规则。事实上,8086 处理器发布之初并没有获得太多关注,也没有被大范围采用。但 8086 在 PC 历史上的地位,怎么形容都不为过。这是因为它带来 x86 架构,奠定了 Intel 在微处理器界的霸主地位,也成为了一种业界标准。

KgdYsg的博客 4138

位bit,字节byte,字,32位,64位,X86,X64

一、位bit 位是计算机存储数据的最小单位,也就是计算存储的数据是一系列二进制位信息。每个位用0或1表示。单个位没有任何结构和意义。 二、字节byte 通常把一个8位的块叫做一个字节 三、字 字由若干个字节构成,字的位数叫做字长,字长就是说字多对应的二进制数的长度。不同的机器有不同的字长。例如,一台8位机,它的一个字就等于一个字节,字长为8位;如果是一台16位机,那么它的一个字就是由两个

GIS on the road happy_h 1万+

更快、更强——64位

更快、更强——64位64位编程的32条“军规”   即使目前没有为纳米电子学、空气动力学、分子静力学、细胞生命周期建模等编写高级应用程序,说不定以下这32条规则,对你向更高级处理器移植程序会有所帮助。近期以来,似乎大家都在谈及64位计算,如采用AMD Athlon 64处理器的笔记本、采用IBM PowerPC 970芯片的Apple G5、又或Intel Itanium架

谢启东的专栏 1055

64 大小_32位和64位Windows系统差别在哪里

如何确定32位和64位系统?计算机体系结构是32位还是64位取决于计算机内部的处理器(CPU)。目前,大多数计算机处理器属于这两个类别之一。 64位处理器比对应的32位处理器指数级更强大,因为它们可以保存和处理更多的信息。要了解两者之间的差异的大小,你必须理解一点关于二进制计数,二进制只有两个数 0或1。因此,32位数具有2 ^ 32个可能的地址,也就是4,294,967,296。相反,64位数字...

weixin_39653078的博客 292
上一篇: MaxDos 在Windows系统中安装纯DOS
下一篇: 劳务网策划书(初稿)
vanter
博客等级 码龄25年 5粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值