当前位置: 首页 > news >正文

lua中大数相乘的问题

math.maxinteger * 2 --> -2

原因:math.maxinteger的二进制 :
0111111111111111111111111111111111111111111111111111111111111111
往左移位,最右加一个0,是
1111111111111111111111111111111111111111111111111111111111111110
对应的十六进制机器位 0xFFFFFFFFFFFFFFFE 对应的真值也就是-2

math.mininteger * 2 --> 0

对应二进制:
1000000000000000000000000000000000000000000000000000000000000000
乘二后的二进制:
0000000000000000000000000000000000000000000000000000000000000000
显然是0

math.maxinteger * math.maxinteger

同样采用移位的思路分析,已知maxinteger是奇数,那么就是math.maxinteger的二进制移位n次后再加一个数m,首先确定n是多少,math.maxinteger 是2^63+(-1),n是63, 之后确定m,m=-1
先把math.maxinteger 左移 63位,为:
1000000000000000000000000000000000000000000000000000000000000000
对应真值 mininteger (也就是-2^64)
再加上-math.maxinteger(二进制
1000000000000000000000000000000000000000000000000000000000000001
),
1000000000000000000000000000000000000000000000000000000000000000
+
1000000000000000000000000000000000000000000000000000000000000001

结果是:
0000000000000000000000000000000000000000000000000000000000000001

显然真值为1

math.mininteger * math.mininteger --> 0

可以从补码乘法的角度理解,具体参考补码乘法。
https://web.archive.org/web/20150213203512/http://pages.cs.wisc.edu/~cs354-1/beyond354/int.mult.html

方便起见,以4位计算机为例:(有符号整数范围-8到7)

          11111000        -8x  11111000     x  -8----------------    ------00000000         00000000000000001111100011111000111110001111100011111000----------------111000001000000

截断后四位,真值是0, 同理,math.mininteger * math.mininteger的结果也是0

值得一提的是,如果观察后8位,同样能得出64的正确真值,而这个数对16取模依然是0(等效于溢出后的运算结果)

相关文章:

lua中大数相乘的问题

math.maxinteger * 2 --> -2 原因:math.maxinteger的二进制 : 0111111111111111111111111111111111111111111111111111111111111111 往左移位,最右加一个0,是 1111111111111111111111111111111111111111111111111111111111111…...

第一个SpringBoot项目

目录 💭1、新建New Project IDEA2023版本创建Sping项目只能勾选17和21,却无法使用Java8?🌟 2、下载JDK 17🌟 💭2、项目创建成功界面 1、目录 🌟 2、pom文件🌟 💭3、…...

Android 10.0 Launcher修改density禁止布局改变功能实现

1.前言 在10.0的系统rom定制化开发中,在关于Launcher3的定制化功能中,在有些功能需要要求改变系统原有的density屏幕密度, 这样就会造成Launcher3的布局变化,所以就不符合要求,接下来就来看下如何禁止改变density造成Launcher3布局功能 改变的实现 2.Launcher修改densit…...

CAN协议简介

协议简介 can协议是一种用于控制网络的通信协议。它是一种基于广播的多主机总线网络协议,常用于工业自动化和控制领域。can协议具有高可靠性、实时性强和抗干扰能力强的特点,被广泛应用于汽车、机械、航空等领域。 can协议采用了先进的冲突检测和错误检测…...

(二)JSX基础

什么是JSX 概念:JSX是JavaScript和XML(HTML)的缩写,表示在JS代码中编写HTML模版结构,它是React中编写UI模板的方式。 优势:1.HTML的声明式模版方法;2.JS的可编程能力 JSX的本质 JSX并不是标准…...

GB 38469-2019 船舶涂料中有害物质限量检测

船舶涂料是指涂于船舶各部位,能防止海水、海洋大气腐蚀和海生物附着及满足船舶特种要求的各种涂料的统称。 GB 38469-2019船舶涂料中有害物质限量检测项目: 测试指标 测试方法 挥发性有机化合物VOC GB 30981 甲苯 GB 24408 苯 GB 30981 甲醇 G…...

汇编:数组-寻址取数据

比例因子寻址: 比例因子寻址(也称为比例缩放索引寻址或基址加变址加比例因子寻址)是一种复杂的内存寻址方式,常用于数组和指针操作。它允许通过一个基址寄存器、一个变址寄存器和一个比例因子来计算内存地址。 语法 比例因子寻…...

ROS自带的OpenCV库和自己安装版本冲突问题现象及解决方法

文章目录 1. 问题现象1.1 编译过程警告1.2 程序运行报错 2. 分析问题原因3. 解决方法 1. 问题现象 1.1 编译过程警告 warning: lipopencv_improc.so.406, needed by /usr/local/lib/libopencv_xfeatures2d.so.4.6.0, may conflict with libopencv_imgproc.so.4.21.2 程序运行…...

html+CSS+js部分基础运用19

1. 应用动态props传递数据,输出影片的图片、名称和描述等信息【要求使用props】,效果图如下: 2.在页面中定义一个按钮和一行文本,通过单击按钮实现放大文本的功能。【要求使用$emit()】 代码可以截图或者复制黏贴放置在“实验…...

探索 Debian 常用命令:掌握 Linux 系统管理的重要一步

Debian 作为一个稳定、高效和安全的操作系统,广泛应用于服务器、桌面和嵌入式系统中。对于新手和经验丰富的系统管理员来说,熟练掌握 Debian 的常用命令是管理和维护系统的基础。本文将详细介绍一些在 Debian 系统中经常使用的命令,帮助读者更好地理解和操作这个强大的操作系…...

「C系列」C 作用域规则

文章目录 一、C 作用域规则二、案例1. 块作用域(Block Scope)2. 文件作用域(File Scope)3. 静态作用域(Static Scope)静态局部变量静态全局变量 4. 函数参数的作用域5. 结构体和联合体的作用域 三、相关链接…...

【机器学习基础】Python编程10:五个实用练习题的解析与总结

Python是一种广泛使用的高级编程语言,它在机器学习领域中的重要性主要体现在以下几个方面: 简洁易学:Python语法简洁清晰,易于学习,使得初学者能够快速上手机器学习项目。 丰富的库支持:Python拥有大量的机…...

【设计模式】结构型设计模式之 门面模式

介绍 门面模式(Facade Pattern)是一种常用的设计模式,属于结构型模式的范畴。它为子系统中的一系列接口提供一个简化的统一接口,即一个外观(Facade),从而使子系统更加容易使用。门面模式并不修…...

MAC地址简介

一、MAC和ip地址 很多同学只知道ip地址,同时也知道ip在网络通讯中的重要性,实际上要实现网络通信的话,除了ip地址外还需要MAC地址的配合,只有在这两种地址的配合之下才能完整的实现互联网的通信。但是由于MAC地址的使用&#xff0…...

五种网络IO模型

目录 前言 文件描述符 为什么要多种io模型 同步IO 1.阻塞IO 2.非阻塞IO 3.多路复用IO(事件驱动IO) select: poll: epoll: 4.信号驱动IO 异步IO 区别 前言 文件描述符 首先我们了解一下文件描述符是什么:…...

VSCode超过390万下载的请求插件

Thunder Client 是一款在 VSCode(Visual Studio Code)中非常受欢迎的 REST API 客户端插件,由Ranga Vadhineni开发,现在已经有超过390万的下载量。它允许开发者直接在编辑器内发送 HTTP 请求,查看响应。Thunder Client…...

前端 JS 经典:下载的流式传输

触发下载在浏览器中有两种方式:1. 客户端的方式 2. 服务器的方式 1. 服务器的方式 通过 a 元素链接到一个服务器的地址,然后需要后端人员配置,当用户点击按钮请求这个地址时,服务端给他加上一个响应头。Content-Disposition 设置…...

k8s面试题大全,保姆级的攻略哦(三)

目录 1、简述ETCD及其特点? 2、简述ETCD适应的场景? 3、简述什么是Kubernetes? 4、简述Kubernetes和Docker的关系? 5、简述Kubernetes中什么是Minikube、Kubectl、Kubelet? 6、简述Kubernetes常见的部署方式? 7、简述Kubernetes如何实现集群管理? 8、简述Kubern…...

从年金理论到杠杆效应,再到财务报表与投资评估指标

一、解释普通年金终值和普通年金现值的概念。 普通年金终值:以利率为1%,每期收款100元,5期为例,普通年金终值的折算过程如图: 普通年金现值:以利率为1%,每期收款100元,5期为例&am…...

K8S - 用kubectl远程访问内网的k8s集群

在之前的文章 K8S - 在任意node里执行kubectl 命令 介绍过, 通过任何node 的主机, 用kubectl 管理集群是很简单 无非就是两个步骤: 下载 k8s master 上的admin.conf在当前主机配置 K8SCONFIG 环境变量指向 下载的config file 其他内网主机也适用 其…...

HunyuanVideo-Foley私有部署全攻略:RTX4090D专用优化,轻松搭建AI视频生成环境

HunyuanVideo-Foley私有部署全攻略:RTX4090D专用优化,轻松搭建AI视频生成环境 在AI视频生成领域,最令人沮丧的莫过于看着别人的演示视频效果惊艳,而自己却卡在环境配置和模型部署的泥潭中。从CUDA版本冲突到显存不足崩溃&#xf…...

李慕婉-仙逆-造相Z-Turbo在C语言项目中的集成方案

李慕婉-仙逆-造相Z-Turbo在C语言项目中的集成方案 将AI图像生成能力无缝集成到C语言项目中,为传统应用注入智能创作活力 1. 为什么要在C项目中集成图像生成能力 在当今的软件开发领域,C语言仍然是系统级编程、嵌入式设备和性能敏感应用的首选语言。虽然…...

影墨·今颜效果实测:100张生成图中98.3%通过小红书内容审核标准

影墨今颜效果实测:100张生成图中98.3%通过小红书内容审核标准 1. 真实效果惊艳展示 「影墨今颜」作为基于FLUX.1-dev引擎的高端AI影像系统,在实际测试中展现出了令人印象深刻的效果表现。我们进行了严格的批量测试,生成100张不同风格的人像…...

从一道经典OJ题出发:详解二叉树‘凹入表示法’的输出技巧与C++实现

从一道经典OJ题出发:详解二叉树‘凹入表示法’的输出技巧与C实现 1. 凹入表示法的独特魅力与实现挑战 在算法竞赛和数据结构面试中,二叉树的输出格式往往成为区分选手水平的关键细节。不同于常见的层序遍历或图形化展示,凹入表示法&#xff0…...

绝区零智能协同系统:AI驱动的游戏效率倍增解决方案

绝区零智能协同系统:AI驱动的游戏效率倍增解决方案 【免费下载链接】ZenlessZoneZero-OneDragon 绝区零 一条龙 | 全自动 | 自动闪避 | 自动每日 | 自动空洞 | 支持手柄 项目地址: https://gitcode.com/gh_mirrors/ze/ZenlessZoneZero-OneDragon 在当代游戏生…...

基于SpringBoot+Vue的疫情物资管理系统管理系统设计与实现【Java+MySQL+MyBatis完整源码】

摘要 近年来,全球范围内突发公共卫生事件频发,疫情物资的高效管理与调配成为保障社会稳定的重要环节。传统物资管理方式依赖人工操作,存在效率低、数据不透明、响应速度慢等问题,难以满足紧急情况下的物资调度需求。尤其在新冠疫情…...

保姆级教程:从零配置ROS2自定义消息包(含CMake/ament避坑指南)

从零构建ROS2自定义消息包的终极实践指南 在机器人开发领域,ROS2的消息系统是模块间通信的核心枢纽。当标准消息类型无法满足特定需求时,自定义消息包便成为开发者必须掌握的技能。本文将带您从零开始,逐步构建一个完整的ROS2自定义消息包&am…...

制造业数据库选型实战:为什么我们从 MySQL 迁移到 TiDB

写在前面 作为一个制造业数字化团队的开发负责人,我最怕听到的一句话就是:“数据库又慢了”。 MOM 平台上线 4 年,数据量从最初的几百 G 涨到几个 T。每次月底报表、跨工厂查询,系统就开始”喘气”。加索引、拆表、优化 SQL………...

收藏!非计算机专业也能转AI大模型?小白/程序员必看,打消转行所有顾虑

当下人工智能(大模型)领域发展势头迅猛,成为职场人眼中的“新风口”,不少就业者都想抓住这波新兴行业的红利,跻身AI赛道。但很多人卡在了起点——担心自己的专业不对口、过往经历不相关,纠结犹豫迟迟不敢迈…...

打破数据标注瓶颈:Label Studio如何让AI训练效率提升300%?

打破数据标注瓶颈:Label Studio如何让AI训练效率提升300%? 【免费下载链接】label-studio Label Studio is a multi-type data labeling and annotation tool with standardized output format 项目地址: https://gitcode.com/GitHub_Trending/la/labe…...