皮皮网
皮皮网

【vue 3.0源码】【lisp源码编程】【编程源码课】负56源码_负56的原码反码补码

来源:bibot源码 发表时间:2024-11-25 10:02:20

1.二进制的原码、补码、反码详解
2.计算机原码反码补码问题和进制转换
3.Go JWT 全面指南

负56源码_负56的负源原码反码补码

二进制的原码、补码、反码详解

       è®¡ç®—机中,并没有原码和反码,只是使用补码,代表正负数。

       ä½¿ç”¨è¡¥ç çš„意义:可以把减法或负数,转换为加法运算。从而简化计算机的硬件。

       ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼

       æ¯”如钟表,时针转一圈,周期是 小时。

       å€’拨 3 小时,可以用正拨 9 小时代替。

       9,就称为-3 的补数。

       è®¡ç®—方法:-3 = 9。

       å¯¹äºŽåˆ†é’ˆï¼Œå€’拨 X 分,就可以用正拨 -X 代替。

       ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼

       å¦‚果,限定了两位十进制数 (0~),周期就是 。

       é‚£ä¹ˆï¼Œå‡ä¸€ï¼Œå°±å¯ä»¥ç”¨ + 代替。

       ã€€ã€€ï¼1 =

       ã€€ã€€ + = (1)

       å¿½ç•¥è¿›ä½ï¼Œåªå–两位数,这两种算法,结果就是相同的。

       äºŽæ˜¯ï¼Œ 就是 -1 的补数。

       å…¶å®ƒè´Ÿæ•°çš„补数,大家可以自己求!

       æ±‚出了负数的补数,就可用加法,代替减法了。

       ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼

       è®¡ç®—机中使用二进制,补数,就改称为【补码】。

       å¸¸ç”¨çš„八位二进制是: ~ 。

       å®ƒä»¬ä»£è¡¨äº†åè¿›åˆ¶ï¼š0~,周期就是 。

       é‚£ä¹ˆï¼Œï¼1,就可以用 = 代替。

       æ‰€ä»¥ï¼šï¼1 的补码,就是 = 。

       åŒç†ï¼šï¼2 的补码,就是 = 。

       ç»§ç»­ï¼šï¼3 的补码,就是 = 。

       ã€‚。。

       æœ€åŽï¼šï¼ï¼Œè¡¥ç æ˜¯ = 。

       è®¡ç®—公式:负数的补码=+这个负数。

       æ­£æ•°ï¼Œç›´æŽ¥è¿ç®—即可,不需要求补码。

       ã€€ã€€ã€€ä¹Ÿå¯ä»¥è¯´ï¼Œæ­£æ•°æœ¬èº«å°±æ˜¯è¡¥ç ã€‚

       ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼

       è¡¥ç çš„应用如: 7-3 = 4。

       ç”¨è¡¥ç çš„计算过程如下:

       ã€€ã€€ã€€ã€€7 的补码=

           -3的补码=

       ï¼ï¼ç›¸åŠ ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼

       ã€€ã€€ã€€å¾—:  (1) = 4 的补码

       èˆå¼ƒè¿›ä½ï¼Œåªä¿ç•™å…«ä½ï¼Œä½œä¸ºç»“果即可。

       è¿™å°±æ˜¯ï¼šä½¿ç”¨è¡¥ç ï¼ŒåŠ æ³•å°±ä»£æ›¿äº†å‡æ³•ã€‚

       æ‰€ä»¥ï¼Œåœ¨è®¡ç®—机中,有一个加法器,就够用了。

       åŽŸç å’Œåç ï¼Œéƒ½æ²¡æœ‰è¿™ç§åŠŸèƒ½ã€‚

       ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼ï¼

       åŽŸç å’Œåç ï¼Œæ¯«æ— ç”¨å¤„。计算机中,根本就没有它们。

计算机原码反码补码问题和进制转换

       1首先了解 低字节位 和高字节位 看图

       2字节在内存的排列方式

       //int num = ; //0开头代表 8禁止 //("%d",num); //所以打印的是8 int num = 0x; //将占 2 位 printf("%p", &num); /* 要特别 注意 低位 在低字节 高位 高字节 0xFAC0 x 0xFAC1 V 0xFAC2 4 0xFAC3 . */ 看图2

       3 printf  不会进行自动转换 void main(){  printf("%d", .3); printf("\n%f", );

       getchar();}

       请看图3

       4 一定要注意数据会溢出数据会溢出请看图4

       unsigned short num = ; printf("我有现金:%d元",num);

       unsigned short num = +1; printf("我有现金:%d元",num);

       上面这样数据就会溢出

       5 原理

       头文件#include<limits.h> printf("%d", INT_MAX); printf("\n%d", INT_MIN); printf("\n%u", UINT_MAX); //有负号的情况下 0代表正式 1代表负数 // //

       6源码反码补码

       //1的源码和-1的源码 //  // //-1符号为是1

       源码反码补码过程//源码

       //-1反码1 符号位不变  所有0变1  1变0//

       //-1补码  符号位不变  所有0变1  1变0  在补1(在反码基础是+1)//  unsigned int num = -1; printf("%d %u", num, num);

       虽然补码后二进制相同 但是他们有负号的符号位不算 所以数据不相同

       7为什么要用补码  非常重要!!码负码反码补码!负源

          1   (1代表十进制)   2   ( 是码负码反码补码2的源码)

       如果我们用2的补码   源码

          反码(所有位取反 负号不变)

          补码(反码基础 +1)

       这时候在相加

          1   2的补码   是不是就是-1

       -1 源码 反码 补码用补码的原因就是因为可以大大节约计算机的资源

       8 数据的取值范围

Go JWT 全面指南

       在当今微服务和分布式系统盛行的背景下,安全、负源高效的码负码反码补码vue 3.0源码用户身份验证机制显得尤为重要。为了有效管理用户的负源访问权限并验证用户身份,我们经常会采用各种身份验证方案。码负码反码补码而JSON Web Tokens(JWT)便是负源其中一种流行的技术,因其简洁、码负码反码补码灵活且易于跨语言实现的负源特性,被广泛应用于系统的码负码反码补码身份验证和信息交换。

       本文旨在介绍如何在Go 语言中使用 JWT。负源内容将涵盖 JWT 的码负码反码补码简单介绍、安装 Go JWT 模块、负源创建 JWT 对象、生成 JWT 字符串以及解析 JWT 字符串等方面。

       准备好了吗?准备一杯你最喜欢的咖啡或茶,随着本文一探究竟吧。

       JSON Web Token(JWT)是一种开放标准( RFC ),用于在网络应用环境间安全地传递声明(claims)。lisp源码编程JWT 是一种紧凑且自包含的方式,用于作为 JSON 对象在各方之间安全地传输信息。由于其信息是经过数字签名的,所以可以确保发送的数据在传输过程中未被篡改。

       JWT 由三个部分组成,它们之间用 . 分隔,格式如下:Header.Payload.Signature → eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJQcm9ncmFtbWVyIiwiaXNzIjoiiL5bqP5ZGY6ZmI5piO5YuHIiwic3ViIjoiY2hlbm1pbmd5bnLmNuIn0.uRnH-rUb7lsZtQo8wXjIOJnIMBxszkvU1gY6hCGjo,下面对每个部分的进行简要介绍:

       3.Signature(签名):为了防止数据篡改,将头部和负载的信息进行一定算法处理,加上一个密钥,编程源码课最后生成签名。如果使用的是 HMAC SHA 算法,那么签名就是将编码后的头部、编码后的负载拼接起来,通过密钥进行HMAC SHA 运算后的结果。

       通过以下命令在Go 程序里安装 Go JWT 依赖:

       创建 Token(JWT) 对象

       生成JWT 字符串首先需要创建 Token 对象(代表着一个 JWT)。因此我们需要先了解如何创建 Token 对象。

       jwt 库主要通过两个函数来创建 Token 对象:NewWithClaims 和 New。

       NewWithClaims 函数

       jwt.NewWithClaims 函数用于创建一个 Token 对象,该函数允许指定一个签名方法和一组声明claims)以及可变参数 TokenOption。黑洞模型源码下面是该函数的签名:

       使用示例

       这段代码首先构建了包含发行者(iss)、主题(sub)和观众(aud)信息的 MapClaims 类型声明。

       然后,通过调用jwt.NewWithClaims 函数,并将 jwt.SigningMethodHS 作为签名方法和之前构建的 mapClaims 作为参数传递,来创建了一个新的 Token 实例。

       New 函数

       jwt.New 函数用于创建一个 Token 对象,该函数允许指定一个签名方法和可变参数 TokenOption。下面是该函数的源码:

       通过源码我们可以发现,该函数内部的听歌积分源码实现通过调用NewWithClaims 函数,并默认传入一个空的 MapClaims 对象,从而生成一个 Token 对象。

       使用示例

       生成 JWT 字符串

       通过使用jwt.Token 对象的 SignedString 方法,我们能够对 JWT 对象进行序列化和签名处理,以生成最终的 token 字符串。该方法的签名如下:

       使用示例

       这段代码首先声明并初始化一个长度为 字节的 byte 切片,然后使用 crypto/rand 库的 Read 函数填充切片(即密钥),确保生成的密钥具有高强度的随机性和不可预测性。

       然后,调用GenerateJwt 函数,传入 jwtKey、jwt.SigningMethodHS 签名方法和包含特定声明的 MapClaims 对象,以创建 JWT 字符串。

       在GenerateJwt 函数内部,它利用 token.SignedString 方法和提供的 key 生成并返回签名的 JWT 字符串。

       jwt 库主要通过两个函数来解析 jwt 字符串:Parse 和 ParseWithClaims。

       Parse 函数

       Parse 函数用于解析 JWT 字符串,函数签名如下:

       使用示例

       这段代码的重点是自定义的ParseJwt 函数,它负责解析 JWT 字符串,并根据验证结果返回 Claims 数据和一个可能的存在的错误。ParseJwt 函数内部利用 jwt.Parse 解析 JWT 字符串。解析后,函数检查得到的 token 对象的 Valid 属性以确认 Claims 是否有效。有效性检查包括但不限于验证签名、检查 token 是否过期。如果 token 通过所有验证,函数返回 Claims 数据;如果验证失败(如签名不匹配或 token 已过期),则返回错误。

       ParseWithClaims 函数

       ParseWithClaims 函数类似 Parse,函数签名如下:

       使用示例

       这段代码中的ParseJwtWithClaims 函数与之前示例中的 ParseJwt 函数功能类似,都是负责解析 JWT 字符串,并根据验证结果返回 Claims 数据和一个可能的存在的错误。不同之处在于,ParseJwtWithClaims 函数内部使用了 jwt.ParseWithClaims 函数来解析 JWT 字符串,这额外要求我们提供一个 Claims 实例来接收解析后的 claims 数据。在此示例中,通过 jwt.MapClaims 提供了这一实例。

       本文首先对JWT 进行了概述,随后深入讲解了在 Go 语言下使用 JWT 的全过程。内容包括安装 Go 的 JWT 模块、创建 JWT 对象、生成 JWT 字符串以及解析 JWT 字符串的详细指南。

相关栏目:知识