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

位运算的概念

文章目录

  • 整数在计算机中的表示
    • 二进制表示
    • 有符号类型和无符号类型
    • 机器数和真值
    • 原码、反码和补码
      • 原码、反码和补码的表示方法
      • 计算机中的表示
  • 位运算
    • 与、或、异或和取反
    • 移位运算
    • 移位运算与乘除法的关系
    • 位运算的性质
  • 目录

整数在计算机中的表示

二进制表示

程序中的所有数在计算机中的表示形式都是二进制,二进制使用两个数码: 0 0 0 1 1 1

一位二进制数称为一个比特(bit),可能取值有 2 2 2 个, k k k 位二进制数的可能取值有 2 k 2^k 2k 个。

8 8 8 个比特组成一个字节(byte),一个字节的可能取值有 2 8 = 256 2^8 = 256 28=256 个。

计算机中有多种表示整数的数据类型,每种数据类型的字节数各不相同,取值范围也各不相同。Java 的整数数据类型有以下四种。

  • 字节型,用 byte \texttt{byte} byte 表示,包含 1 1 1 个字节,即 8 8 8 位二进制数,可能取值有 2 8 2^8 28 个。

  • 短整型,用 short \texttt{short} short 表示,包含 2 2 2 个字节,即 16 16 16 位二进制数,可能取值有 2 16 2^{16} 216 个。

  • 整型,用 int \texttt{int} int 表示,包含 4 4 4 个字节,即 32 32 32 位二进制数,可能取值有 2 32 2^{32} 232 个。

  • 长整型,用 long \texttt{long} long 表示,包含 8 8 8 个字节,即 64 64 64 位二进制数,可能取值有 2 64 2^{64} 264 个。

有符号类型和无符号类型

计算机中的数据类型包括有符号类型和无符号类型,这两种类型表示的整数分别称为有符号整数和无符号整数。

有符号整数中,最高位用于表示符号,因此最高位又称符号位,最高位是 0 0 0 表示非负数,最高位是 1 1 1 表示负数。无符号整数中,不存在用于表示符号的位,因此无符号整数都是非负数。

有符号整数的表示范围包括非负整数和负整数,无符号整数的表示范围只有非负整数。在位数相同的情况下,无符号整数可以表示的最大值大于有符号整数可以表示的最大值。

C、C++、C# 等语言支持有符号类型和无符号类型,Java 只支持有符号类型。

机器数和真值

一个数在计算机中的二进制表示形式称为这个数的机器数。机器数是有符号数,最高位是符号位, 0 0 0 表示非负数, 1 1 1 表示负数。

因为机器数的最高位是符号位,所以机器数的形式值不一定等于真正数值。为了区别形式值和真正数值,将机器数对应的真正数值称为真值。

考虑 1 1 1 个字节的二进制数表示的机器数。十进制的 + 20 +20 +20 对应的机器数是 00010100 00010100 00010100,十进制的 − 20 -20 20 对应的机器数是 10010100 10010100 10010100

机器数 00010100 00010100 00010100 的形式值是 20 20 20,与真正数值相等。机器数 10010100 10010100 10010100 的形式值是 148 148 148,与真正数值不相等。

原码、反码和补码

原码、反码和补码的表示方法

原码是机器数的符号位加上机器数的真值的绝对值,最高位是符号位,其余位表示数值。

反码和补码在原码的基础上得到。

非负数的反码与原码相同,负数的反码是将原码的除了符号位之外的每一位取反。

非负数的补码与原码相同,负数的补码是将原码的除了符号位之外的每一位取反,然后加 1 1 1

考虑 1 1 1 个字节的二进制数表示。

+ 20 +20 +20 的原码、反码和补码都是 00010100 00010100 00010100

− 20 -20 20 的原码是 10010100 10010100 10010100,反码是 11101011 11101011 11101011,补码是 11101100 11101100 11101100

根据上述例子可知,同一个非负数的原码、反码和补码的表示方法相同,同一个负数的原码、反码和补码的表示方法不同。其中,原码是人脑最容易理解和计算的表示方法,相比之下,反码和补码的表示方法不直观,通常需要转换成原码才能计算其数值。

计算机中的表示

虽然有符号数的二进制表示有原码、反码和补码三种表示方法,但是计算机使用补码的表示方法。

对于计算机而言,判断符号位将导致运算变得复杂,为了简化运算,将符号位也参与运算。

对于 k k k 位二进制数表示,可能取值有 2 k 2^k 2k 个。考虑原码、反码和补码三种表示方法可以表示的数值范围。

使用原码,可以表示的数值范围是 [ − ( 2 k − 1 − 1 ) , 2 k − 1 − 1 ] [-(2^{k - 1} - 1), 2^{k - 1} - 1] [(2k11),2k11],该范围的不同数值有 2 k − 1 2^k - 1 2k1 个,数值 0 0 0 存在 + 0 +0 +0 − 0 -0 0 的两个不同的原码表示。使用原码的另一个问题是,做减法运算会导致错误的结果。虽然原码是人脑容易理解和计算的表示方法,但是由于原码存在上述两个问题,因此不适用于计算机。

使用反码,可以表示的数值范围是 [ − ( 2 k − 1 − 1 ) , 2 k − 1 − 1 ] [-(2^{k - 1} - 1), 2^{k - 1} - 1] [(2k11),2k11],该范围的不同数值有 2 k − 1 2^k - 1 2k1 个,数值 0 0 0 存在 + 0 +0 +0 − 0 -0 0 的两个不同的反码表示。虽然使用反码可以解决减法运算结果错误的问题,但是仍存在 + 0 +0 +0 − 0 -0 0 的问题,因此不适用于计算机。

使用补码,可以表示的数值范围是 [ − 2 k − 1 , 2 k − 1 − 1 ] [-2^{k - 1}, 2^{k - 1} - 1] [2k1,2k11],该范围的不同数值有 2 k 2^k 2k 个,每个数值都只有一个补码表示。补码可以同时解决减法运算结果错误的问题和存在 + 0 +0 +0 − 0 -0 0 的问题,而且比原码和反码多表示一个最小值,因此计算机使用补码的表示方法。

位运算

在计算机的底层,一切运算都是基于位运算实现的。

位运算共有 6 6 6 种,分别是:与、或、异或、取反、左移和右移,其中左移和右移运算统称移位运算,移位运算又分为算术移位和逻辑移位。

上述位运算中,只有取反是一元运算,其余的都是二元运算。

与、或、异或和取反

与运算的符号是 & \& &,运算规则是:对于每个二进制位,当两个数对应的位都是 1 1 1 时,结果是 1 1 1,否则结果是 0 0 0

0 & 0 = 0 0 & 1 = 0 1 & 0 = 0 1 & 1 = 1 \begin{aligned} 0~\&~0 &= 0 \\ 0~\&~1 &= 0 \\ 1~\&~0 &= 0 \\ 1~\&~1 &= 1 \end{aligned} 0 & 00 & 11 & 01 & 1=0=0=0=1

或运算的符号是 ∣ | ,运算规则是:对于每个二进制位,当两个数对应的位中至少有一个是 1 1 1 时,结果是 1 1 1,否则结果是 0 0 0

0 ∣ 0 = 0 0 ∣ 1 = 1 1 ∣ 0 = 1 1 ∣ 1 = 1 \begin{aligned} 0~|~0 &= 0 \\ 0~|~1 &= 1 \\ 1~|~0 &= 1 \\ 1~|~1 &= 1 \end{aligned} 0  00  11  01  1=0=1=1=1

异或运算的符号是 ⊕ \oplus (代码中的异或运算符是 ∧ \wedge ),运算规则是:对于每个二进制位,当两个数对应的位中有且只有一个是 1 1 1 时,结果是 1 1 1,否则结果是 0 0 0

0 ⊕ 0 = 0 0 ⊕ 1 = 1 1 ⊕ 0 = 1 1 ⊕ 1 = 0 \begin{aligned} 0 \oplus 0 &= 0 \\ 0 \oplus 1 &= 1 \\ 1 \oplus 0 &= 1 \\ 1 \oplus 1 &= 0 \end{aligned} 00011011=0=1=1=0

取反运算的符号是 ∼ \sim ,运算规则是:对一个数的每个二进制位进行取反操作, 0 0 0 变成 1 1 1 1 1 1 变成 0 0 0

∼ 0 = 1 ∼ 1 = 0 \begin{aligned} \sim 0 &= 1 \\ \sim 1 &= 0 \end{aligned} 01=1=0

移位运算

移位运算按照移位方向分类可以分成左移和右移,按照是否带符号分类可以分成算术移位和逻辑移位。

左移运算时,将全部二进制位向左移动若干位,高位丢弃,低位补 0 0 0。对于左移运算,算术移位和逻辑移位是相同的。左移运算的符号是 < < << <<

右移运算时,将全部二进制位向右移动若干位,低位丢弃,高位的补位由算术移位或逻辑移位决定。

  • 算术右移时,高位补最高位。

  • 逻辑右移时,高位补 0 0 0

Java 中,算术右移运算的符号是 > > >> >>,逻辑右移运算的符号是 > > > >>> >>>

C、C++、C# 等语言中,右移运算的符号是 > > >> >>,不区分算术右移和逻辑右移,而是根据数据类型中的有符号类型和无符号类型区分算术右移和逻辑右移。对于有符号类型,右移运算为算术右移;对于无符号类型,右移运算为逻辑右移。

移位运算与乘除法的关系

移位运算与乘除法有密切的关联性,使用位运算实现乘除法的效率高于直接计算乘除法的效率。

左移运算对应乘法运算。将一个数左移 k k k 位,等价于将这个数乘以 2 k 2^k 2k。如果左移运算之后的结果超出特定类型的整数的表示范围,则运算结果溢出,最高位被舍弃。

算术右移对应除法运算。将一个数右移 k k k 位,相当于将这个数除以 2 k 2^k 2k,结果向下取整。

将一个数左移 k k k 位和使用乘号计算这个数乘以 2 k 2^k 2k 的结果一定相同,但是将一个数右移 k k k 位和使用除号计算这个数除以 2 k 2^k 2k 的结果不一定相同。由于使用除号计算整数除法的结果向零取整,而使用算术右移计算整数除法的结果向下取整,因此当被除数是非负数时两者的结果相同,当被除数是负数时两者的结果可能不同。

位运算的性质

位运算的性质有很多,此处列举位运算中的与、或、异或和取反的常见性质。假设以下出现的变量都是有符号整数。

  • 与运算性质: 0 & x = 0 0 ~\&~ x = 0 0 & x=0 x & 0 = 0 x ~\&~ 0 = 0 x & 0=0 x & ( − 1 ) = x x ~\&~ (-1) = x x & (1)=x x & ( ∼ x ) = 0 x ~\&~ (\sim x) = 0 x & (x)=0

  • 或运算性质: 0 ∣ x = x 0 ~|~ x = x 0  x=x x ∣ 0 = x x ~|~ 0 = x x  0=x x ∣ ( ∼ x ) = − 1 x ~|~ (\sim x) = -1 x  (x)=1

  • 异或运算性质: 0 ⊕ x = x 0 \oplus x = x 0x=x x ⊕ 0 = x x \oplus 0 = x x0=x x ⊕ x = 0 x \oplus x = 0 xx=0

  • 取反运算性质: − 1 = ∼ 0 -1 = \sim 0 1=∼0 − x = ∼ ( x − 1 ) -x = \sim (x - 1) x=∼(x1)

  • 幂等律(注意异或运算不适用): x & x = x x ~\&~ x = x x & x=x x ∣ x = x x ~|~ x = x x  x=x

  • 交换律: x & y = y & x x ~\&~ y = y ~\&~ x x & y=y & x x ∣ y = y ∣ x x ~|~ y = y ~|~ x x  y=y  x x ⊕ y = y ⊕ x x \oplus y = y \oplus x xy=yx

  • 结合律: ( x & y ) & z = x & ( y & z ) (x ~\&~ y) ~\&~ z = x ~\&~ (y ~\&~ z) (x & y) & z=x & (y & z) ( x ∣ y ) ∣ z = x ∣ ( y ∣ z ) (x ~|~ y) ~|~ z = x ~|~ (y ~|~ z) (x  y)  z=x  (y  z) ( x ⊕ y ) ⊕ z = x ⊕ ( y ⊕ z ) (x \oplus y) \oplus z = x \oplus (y \oplus z) (xy)z=x(yz)

  • 分配律: ( x & y ) ∣ z = ( x ∣ z ) & ( y ∣ z ) (x ~\&~ y) ~|~ z = (x ~|~ z) ~\&~ (y ~|~ z) (x & y)  z=(x  z) & (y  z) ( x ∣ y ) & z = ( x & z ) ∣ ( y & z ) (x ~|~ y) ~\&~ z = (x ~\&~ z) ~|~ (y ~\&~ z) (x  y) & z=(x & z)  (y & z) ( x ⊕ y ) & z = ( x & z ) ⊕ ( y & z ) (x \oplus y) ~\&~ z = (x ~\&~ z) \oplus (y ~\&~ z) (xy) & z=(x & z)(y & z)

  • 德·摩根律: ∼ ( x & y ) = ( ∼ x ) ∣ ( ∼ y ) \sim(x ~\&~ y) = (\sim x) ~|~ (\sim y) (x & y)=(x)  (y) ∼ ( x ∣ y ) = ( ∼ x ) & ( ∼ y ) \sim(x ~|~ y) = (\sim x) ~\&~ (\sim y) (x  y)=(x) & (y)

  • 其他性质:

    • x & ( x − 1 ) x ~\&~ (x - 1) x & (x1) 的结果为将 x x x 的二进制表示的最后一个 1 1 1 变成 0 0 0

    • x & ( − x ) x ~\&~ (-x) x & (x)(与 x & ( ∼ ( x − 1 ) ) x ~\&~ (\sim (x - 1)) x & ((x1)) 等价)的结果为只保留 x x x 的二进制表示的最后一个 1 1 1,其余的 1 1 1 都变成 0 0 0

上述性质在位运算的题目中经常使用到。

目录

  1. 位运算题目:数组异或操作
  2. 位运算题目:解码异或后的数组
  3. 位运算题目:交替位二进制数
  4. 位运算题目:位 1 的个数
  5. 位运算题目:比特位计数
  6. 位运算题目:汉明距离
  7. 位运算题目:颠倒二进制位
  8. 位运算题目:二进制手表
  9. 位运算题目:二进制间距
  10. 位运算题目:数字的补数
  11. 位运算题目:数字转换为十六进制数
  12. 位运算题目:两整数之和
  13. 位运算题目:或运算的最小翻转次数
  14. 位运算题目:最大单词长度乘积
  15. 位运算题目:UTF-8 编码验证
  16. 位运算题目:汉明距离总和
  17. 位运算题目:数字范围按位与
  18. 位运算题目:N 天后的牢房
  19. 位运算题目:形成两个异或相等数组的三元组数目
  20. 位运算题目:连接连续二进制数字
  21. 位运算题目:格雷编码
  22. 位运算题目:循环码排列
  23. 位运算题目:解码异或后的排列
  24. 位运算题目:两数相除
  25. 位运算题目:寻找重复数
  26. 位运算题目:按位与为零的三元组
  27. 位运算题目:安排电影院座位
  28. 位运算题目:黑板异或游戏
  29. 位运算题目:找到最接近目标值的函数值
  30. 位运算题目:找出最长的超赞子字符串

相关文章:

位运算的概念

文章目录 整数在计算机中的表示二进制表示有符号类型和无符号类型机器数和真值原码、反码和补码原码、反码和补码的表示方法计算机中的表示 位运算与、或、异或和取反移位运算移位运算与乘除法的关系位运算的性质 目录 整数在计算机中的表示 二进制表示 程序中的所有数在计算…...

自主Shell命令行解释器

什么是命令行 我们一直使用的"ls","cd","pwd","mkdir"等命令&#xff0c;都是在命令行上输入的&#xff0c;我们之前对于命令行的理解&#xff1a; 命令行是干啥的&#xff1f;是为我们做命令行解释的。 命令行这个东西实际上是我们…...

Vue.js 的介绍与组件开发初步

Vue.js 的介绍与组件开发初步 Vue.js 的介绍与组件开发初步引言第一部分&#xff1a;Vue.js 基础入门1.1 什么是 Vue.js&#xff1f;1.2 搭建 Vue.js 开发环境安装 Node.js 和 npm安装 Vue CLI创建新项目运行示例 1.3 第一个 Vue.js 示例 第二部分&#xff1a;Vue.js 组件开发基…...

XCCL、NCCL、HCCL通信库

XCCL提供的基本能力 XCCL提供的基本能力 不同的XCCL 针对不同的网络拓扑&#xff0c;实现的是不同的优化算法的&#xff08;不同CCL库最大的区别就是这&#xff09; 不同CCL库还会根据自己的硬件、系统&#xff0c;在底层上面对一些相对应的改动&#xff1b; 但是对上的API接口…...

Python教学:文档处理及箱线图等

代码1&#xff1a; import os import pandas as pd import numpy as py import os.path from os import listdir import openpyxl from openpyxl import Workbook import re import matplotlib.pyplot as plt # 导入matplotlib的绘图模块&#xff0c;用于可视化 cwdos.getcwd…...

【Redis】安装配置Redis超详细教程 / Linux版

Linux安装配置Redis超详细教程 安装redis依赖安装redis启动redis停止redisredis.conf常见配置设置redis为后台启动修改redis监听地址设置工作目录修改密码监听的端口号数据库数量设置redis最大内存设置日志文件设置redis开机自动启动 学习视频&#xff1a;黑马程序员Redis入门到…...

【大数据技术】教程05:本机DataGrip远程连接虚拟机MySQL/Hive

本机DataGrip远程连接虚拟机MySQL/Hive datagrip-2024.3.4VMware Workstation Pro 16CentOS-Stream-10-latest-x86_64-dvd1.iso写在前面 本文主要介绍如何使用本机的DataGrip连接虚拟机的MySQL数据库和Hive数据库,提高编程效率。 安装DataGrip 请按照以下步骤安装DataGrip软…...

springboot 启动原理

目标&#xff1a; SpringBootApplication注解认识了解SpringBoot的启动流程 了解SpringFactoriesLoader对META-INF/spring.factories的反射加载认识AutoConfigurationImportSelector这个ImportSelector starter的认识和使用 目录 SpringBoot 启动原理SpringBootApplication 注…...

llama.cpp GGUF 模型格式

llama.cpp GGUF 模型格式 1. Specification1.1. GGUF Naming Convention (命名规则)1.1.1. Validating Above Naming Convention 1.2. File Structure 2. Standardized key-value pairs2.1. General2.1.1. Required2.1.2. General metadata2.1.3. Source metadata 2.2. LLM2.2.…...

使用Pytorch训练一个图像分类器

一、准备数据集 一般来说&#xff0c;当你不得不与图像、文本或者视频资料打交道时&#xff0c;会选择使用python的标准库将原始数据加载转化成numpy数组&#xff0c;甚至可以继续转换成torch.*Tensor。 对图片而言&#xff0c;可以使用Pillow库和OpenCV库对视频而言&#xf…...

PythonStyle MVC 开发框架

在 Python 中&#xff0c;MVC&#xff08;Model - View - Controller&#xff0c;模型 - 视图 - 控制器&#xff09;是一种常见的软件设计模式&#xff0c;它将应用程序分为三个主要部分&#xff0c;各自承担不同的职责&#xff0c;以提高代码的可维护性、可扩展性和可测试性。…...

HTTP协议的无状态和无连接

无连接 ①无连接的含义 这里所说的无连接并不是指不连接&#xff0c;客户与服务器之间的HTTP连接是一种一次性连接&#xff0c;它限制每次连接只处理一个请求&#xff0c;当服务器返回本次请求的应答后便立即关闭连接&#xff0c;下次请求再重新建立连接。这种一次性连接主要考…...

毫秒级响应的VoIP中的系统组合推荐

在高并发、低延迟、毫秒级响应的 VoIP 场景中&#xff0c;选择合适的操作系统组合至关重要。以下是针对 Ubuntu linux-lowlatency、CentOS Stream kernel-rt 和 Debian 自定义 PREEMPT_RT 的详细对比及推荐&#xff1a; 1. 系统组合对比 特性Ubuntu linux-lowlatencyCentO…...

PWN--格式化字符串

简介 ‌格式化字符串‌是指在编程过程中&#xff0c;通过特殊的占位符将相关对应的信息整合或提取的规则字符串。格式化字符串包括格式化输入和格式化输出&#xff0c;其本质是程序员调用相关格式化字符串的操作协议规定。错误的或不当的信息配置可能导致程序运行失效或产生未…...

tf.Keras (tf-1.15)使用记录2-基于tf.keras.layers创建层

tf.keras.layers是keras的主要网络创建方法&#xff0c;里面已经有成熟的网络层&#xff0c;也可以通过继承的方式自定义神经网络层。 在keras的model定义中&#xff0c;为了保证所有对数据的操作都是可追溯、可保存、可反向传播&#xff0c;需要保证对数据的任何操作都是基于t…...

面试经典150题——栈

文章目录 1、有效的括号1.1 题目链接1.2 题目描述1.3 解题代码1.4 解题思路 2、2.1 题目链接2.2 题目描述2.3 解题代码2.4 解题思路 3、最小栈3.1 题目链接3.2 题目描述3.3 解题代码3.4 解题思路 4、逆波兰表达式求值4.1 题目链接4.2 题目描述4.3 解题代码4.4 解题思路 5、基本…...

FBX SDK的使用:读取Mesh

读取顶点数据 要将一个Mesh渲染出来&#xff0c;必须要有顶点的位置&#xff0c;法线&#xff0c;UV等顶点属性&#xff0c;和三角面的顶点索引数组。在提取这些数据之前&#xff0c;先理解FBX SDK里面的几个概念&#xff1a; Control Point 顶点的位置&#xff0c;就是x,y,z…...

EtherCAT主站IGH-- 49 -- 搭建xenomai系统及自己的IGH主站

EtherCAT主站IGH-- 49 -- 搭建xenomai系统及自己的IGH主站 0 Ubuntu18.04系统IGH博客、视频欣赏链接一 移植xenomai系统1,下载安装工具包2,下载linux内核及xenomai2.1,下载linux内核2.2,下载xenomai2.3,下载补丁ipipe2.4,解压缩包3,打补丁4,配置内核5,编译内核6,安装编译好的内…...

Java控制台登录系统示例代码

实现一个简单的登录系统需要包括用户输入用户名和密码、验证用户信息等功能。以下是一个简单的Java控制台登录系统示例代码。这个系统使用一个简单的用户信息存储方式&#xff08;如数组或哈希表&#xff09;&#xff0c;并提供基本的登录验证功能。 示例代码 import java.ut…...

S4 HANA明确税金汇差科目(OBYY)

本文主要介绍在S4 HANA OP中明确税金汇差科目(OBYY)相关设置。具体请参照如下内容&#xff1a; 1. 明确税金汇差科目(OBYY) 以上配置点定义了在外币挂账时&#xff0c;当凭证抬头汇率和税金行项目汇率不一致时&#xff0c;造成的差异金额进入哪个科目。此类情况只发生在FB60/F…...

Web-3.0(Solidity)基础教程

Solidity 是 以太坊智能合约编程语言&#xff0c;用于编写 去中心化应用&#xff08;DApp&#xff09;。如果你想开发 Web3.0 应用&#xff0c;Solidity 是必学的。 Remix - Ethereum IDE&#xff08;在线编写 Solidity&#xff09; 特性Remix IDEHardhat适用场景适合 初学者 …...

深入理解linux中的文件(上)

1.前置知识&#xff1a; &#xff08;1&#xff09;文章 内容 属性 &#xff08;2&#xff09;访问文件之前&#xff0c;都必须打开它&#xff08;打开文件&#xff0c;等价于把文件加载到内存中&#xff09; 如果不打开文件&#xff0c;文件就在磁盘中 &#xff08;3&am…...

背包问题和单调栈

背包问题&#xff08;动态规划&#xff09; 动态五步曲 dp数组及下标索引的含义递推公式dp数组如何初始化遍历顺序打印dp数组 01背包&#xff1a;n种物品&#xff0c;有一个,二维数组遍历顺序可以颠倒&#xff0c;&#xff08;滚动数组&#xff09;一维数组遍历顺序不可颠倒…...

Airflow:深入理解Apache Airflow Task

Apache Airflow是一个开源工作流管理平台&#xff0c;支持以编程方式编写、调度和监控工作流。由于其灵活性、可扩展性和强大的社区支持&#xff0c;它已迅速成为编排复杂数据管道的首选工具。在这篇博文中&#xff0c;我们将深入研究Apache Airflow 中的任务概念&#xff0c;探…...

WebSocket——环境搭建与多环境配置

一、前言&#xff1a;为什么要使用多环境配置&#xff1f; 在开发过程中&#xff0c;我们通常会遇到多个不同的环境&#xff0c;比如开发环境&#xff08;Dev&#xff09;、测试环境&#xff08;Test&#xff09;、生产环境&#xff08;Prod&#xff09;等。每个环境的配置和需…...

93,【1】buuctf web [网鼎杯 2020 朱雀组]phpweb

进入靶场 页面一直在刷新 在 PHP 中&#xff0c;date() 函数是一个非常常用的处理日期和时间的函数&#xff0c;所以应该用到了 再看看警告的那句话 Warning: date(): It is not safe to rely on the systems timezone settings. You are *required* to use the date.timez…...

ChatGPT怎么回事?

纯属发现&#xff0c;调侃一下~ 这段时间deepseek不是特别火吗&#xff0c;尤其是它的推理功能&#xff0c;突发奇想&#xff0c;想用deepseek回答一些问题&#xff0c;回答一个问题之后就回复服务器繁忙&#xff08;估计还在被攻击吧~_~&#xff09; 然后就转向了GPT&#xf…...

机器学习day7

自定义数据集 使用pytorch框架实现逻辑回归并保存模型&#xff0c;然后保存模型后再加载模型进行预测&#xff0c;对预测结果计算精确度和召回率及F1分数 代码 import numpy as np import torch import torch.nn as nn import torch.optim as optimizer import matplotlib.pyp…...

本地部署DeepSeek教程(Mac版本)

第一步、下载 Ollama 官网地址&#xff1a;Ollama 点击 Download 下载 我这里是 macOS 环境 以 macOS 环境为主 下载完成后是一个压缩包&#xff0c;双击解压之后移到应用程序&#xff1a; 打开后会提示你到命令行中运行一下命令&#xff0c;附上截图&#xff1a; 若遇…...

2月3日星期一今日早报简报微语报早读

2月3日星期一&#xff0c;农历正月初六&#xff0c;早报#微语早读。 1、多个景区发布公告&#xff1a;售票数量已达上限&#xff0c;请游客合理安排行程&#xff1b; 2、2025春节档总票房破70亿&#xff0c;《哪吒之魔童闹海》破31亿&#xff1b; 3、美宣布对中国商品加征10…...