c#入门-补码

news2024/9/28 13:21:53

补码

明明我们用正数用的更多,如果把0归到负数里面,那么正数就是整的2n次方了。
为什么不这么做呢?

如果你的手表快了20分钟,你可以:
1.把他调慢20分钟
2.再调快11小时40分钟
在这里插入图片描述
其实负数就是一个特别大的正数。CPU没有做出来减法这种电路。
所有的减法都是加上这个数的负数,然后用溢出来完成的。
并且使用这种方法储存数据,不需要把符号位单独拿出来算。只要跟着右边的比特一起算加法就行了。

因此,0只能划分到较小的正数那一块了。

二进制计数

计算机储存数字是以二进制方式储存的。
二进制的数字要么0,要么1。两个1加起来就会向前进位变成10。

列个表可以直观一点看出来

----------
00000000(00)00000001(01)00000010(02)00000011(03)00000100(04)00000101(05)00000110(06)00000111(07)00001000(08)00001001(09)
00001010(10)00001011(11)00001100(12)00001101(13)00001110(14)00001111(15)00010000(16)00010001(17)00010010(18)00010011(19)
00010100(20)00010101(21)00010110(22)00010111(23)00011000(24)00011001(25)00011010(26)00011011(27)00011100(28)00011101(29)
00011110(30)00011111(31)00100000(32)00100001(33)00100010(34)00100011(35)00100100(36)00100101(37)00100110(38)00100111(39)
00101000(40)00101001(41)00101010(42)00101011(43)00101100(44)00101101(45)00101110(46)00101111(47)00110000(48)00110001(49)
00110010(50)00110011(51)00110100(52)00110101(53)00110110(54)00110111(55)00111000(56)00111001(57)00111010(58)00111011(59)
00111100(60)00111101(61)00111110(62)00111111(63)01000000(64)01000001(65)01000010(66)01000011(67)01000100(68)01000101(69)
01000110(70)01000111(71)01001000(72)01001001(73)01001010(74)01001011(75)01001100(76)01001101(77)01001110(78)01001111(79)
01010000(80)01010001(81)01010010(82)01010011(83)01010100(84)01010101(85)01010110(86)01010111(87)01011000(88)01011001(89)
01011010(90)01011011(91)01011100(92)01011101(93)01011110(94)01011111(95)01100000(96)01100001(97)01100010(98)01100011(99)

位逻辑运算

位与

输出
000
010
100
111(只有两个数都是1时才输出1)

34位与21的结果是

原数87654321
3700100101
2100010101
5000001(都为1)01(都为1)

位或

逻辑与,是对每个比特进行一次与运算

输出
000
01(只要有1就输出1)1
1(只要有1就输出1)01
1(只要有1就输出1)11

34位或21的结果是

原数87654321
37001(有1就输出1)001(有1就输出1)01(有1就输出1)
210001(有1就输出1)0101
5300110101

异或

输出
000
011(两数不同输出1)
101(两数不同输出1)
110

34位或21的结果是

原数87654321
3700100101
2100010101
48001(两数不同)1(两数不同)0000

反码

输入输出
01(和输入不同)
10(和输入不同)

37的反码是

原数87654321
370(正数)0100101
-381(负数)1011010

全1的情况会被认为是-1。
而全0却会被认为是0。
所以一个数反码后绝对值会差1。

基本运算

加法

两个数字类型相加,和我们直接列竖式计算是一样的。
计算37+17,从上面的表找到对应的数字。

原数87654321
3700100101
1700010001
进位------1-
5400110110

加法自己身上的数,使用异或算法:两者不同则为1。
进位的数使用与算法:都为1才进位。
所以异或又称为不进位的加法。

减法

CPU没有算减法的指令,减法是计算加上他的负数完成的。

54-17,首先把17-1再进行反码

原数8(符号位)7654321
170(正数)0010001
-171(负数)1101111

17这个负数,是和数字的最大值(全1)差16的数字。
进行相加后,

原数9(溢出)8(符号位)7654321
54-0(正数)0110110
-17-1(负数)1101111
进位1111111--
371(舍去)0(正数)0100101

位移运算

位移运算就是把整个数字向一边挪。
不够的补0,溢出的舍去。

原数1110987654321
37---0(正数)0100101
40(正数)0000100---

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/130650.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Unity 基于法线和深度实现完美描边,可独立控制物体描边

目录前言自定义PostProcessOutlineShader关键代码说明1 使用深度绘制描边1.1 获得斜四方形UV坐标:1.2 采样四方向深度2 使用法线绘制描边3 解决倾斜表面白块问题3.1 计算视方向3.2 使用视方向修正阈值4 单独控制物体是否显示描边OutlineShader完整代码前言 最近项目…

github上传代码(亲测实用)

又被github上传代码折腾了我3个小时,各种问题都遇到过,最后写篇博客记录一下,方便后续上传。 github创建项目完成后,就会出现上传指令,如下图所示: 现在只需要按着命令的提示一步步执行; 1.点…

一文读懂HTTPS

大家第一次接触 HTTPS 协议的时候是不是和我一样,非常困惑。 这玩意概念又多又繁琐。尤其是里面的公钥私钥啥的。 当时就特别想知道,为什么用公钥加密却不能用公钥解密? 看完这篇文章你会弄明白,同时还会解锁很多HTTPS里的细节…

ansible的安装

自定义环境 1.操作环境 角色主机名IP地址组名 控制主机 server.example.com 192.168.90.134 server 受控主机 node1.example.com 192.168.90.135 node1 受控主机 node2.example.com 192.168.90.133 node2 需要保准三台主机能够互相通信。设置同一种网络模式&#xff0…

Tic-Tac-Toe可能棋局搜索的实现(python)

目录 1. 前言 2. 算法流程 3. 代码实现 3.1 终局及胜负判定方法 3.2 搜索邻节点 3.3 打印棋盘状态 3.4 代码 4. 小结 1. 前言 Tic-Tac-Toe中文常译作井字棋,即在3 x 3的棋盘上,双方轮流落子,先将3枚棋子连成一线的一方获得胜利。Tic-…

✿✿✿JavaScript --- jQuery框架一

目 录 1.jQuery的介绍和在线学习网址以及下载网址 2.jQuery的功能和优势 3.引用jQuery库和第一个案例 4.jQuery代码格式和注释 5.jQuery如何达到获取原生的DOM对象 6.jQuery选择器(CSS对比版) (1)常见选择器 (2)高级选择器以及方法 (3)属性选择…

单片机基础知识

目录 一、单片机基本认知 二、IO口输入和输出 三、点亮一个LED 1、编程实现LED闪烁 2、按下按键点亮灯 3、按键的消抖 4、记录状态位来控制LED 一、单片机基本认知 单片机和PC电脑相比的话,相当于电脑的主板 单片机是一种集成电路芯片。单片机又称单片微控…

S32DS_Optimization优化选项

S32DS_Optimization优化选项 S32DS3.4的选项, 右击工程后出现的选项 char is signed 让char类型为有符号, 类似signed char bitfield is unsigned 当声明不使用signed/unsigned时, 控制位字段是否无符号; 默认signed(因为基本整形(int等)也是signed) Function sections 默认情…

C语言—动态内存管理和柔性数组

目录 1. C/C的内存开辟 2. 为什么存在动态内存分配 3. 动态内存函数介绍 3.1 malloc 和 free 3.2 calloc() 3.3 realloc() 4. 常见的动态内存错误 4.1 对NULL指针的解引用操作 4.2 对动态开辟的空间越界访问 4.3 对非动态内存开辟的空间进行free(&…

外贸谈判前需要注意的4p

01Past了解客户的过去 当一个客户找到我们的时候,作为业务,我们需要第一时间回复客户所问到的问题。让客户感受到,他需要的产品我们公司可以提供。于此同时,在客户沟通意愿度较高的时候,我们不妨多跟客户沟通一下几个问…

Java学习笔记 --- MySQL-索引和事务

一、索引 索引的原理 1、没有索引会全表扫描,从而查找速度会很慢 2、使用索引会形成一个索引的数据结构,比如二叉树 3、索引的代价 磁盘占用 对 dml(update、delete、insert)语句的效率影响 索引的类型 1、主键索引&#xff…

2022年圣诞节 | 用代码实现简单圣诞树

2022年圣诞节到来啦,很高兴这次我们又能一起度过~ 一、前言 本文我们用 Python 来画一棵带背景音乐效果的雪夜圣诞树以及使用 HTMLCSSJS 在页面渲染出动态圣诞树,所涉及到的源码均来自GitHub开源站点。 二、效果展示 Python HTMLCSSJS 三、编码实现 …

(六)汇编语言——包含多个段的程序

目录 使用数据 使用栈 代码 总结 使用数据 首先,我们来看一个问题,就是编程计算0123H,0456H,0789H,0abcH,0defH,0fedH,0cbaH,0987H的和,结果存在ax寄存器…

《剑指offer》每日三题

这里使用的是题库: https://leetcode.cn/problem-list/xb9nqhhg/?page1 目录剑指 Offer 07. 重建二叉树剑指 Offer 14- I. 剪绳子剑指 Offer 14- II. 剪绳子 II剑指 Offer 07. 重建二叉树 递归思想: 代码 class Solution {int pPre0;//用于遍历preorde…

深入理解HashMap

HashMap集合 1. HashMap集合简介 HashMap基于哈希表的Map接口实现,是以key-value存储形式存在,即主要用来存放键值对。hashMap的实现不是同步的,这就意味着它不是线程安全的。它的key、value都可以为null。此外,HashMap中的映射不是有序的。 JDK1.8之前…

短视频上热门技巧总结,这样做你也可以快速上热门。

最近开始做短视频,找了很多短视频运营创作技巧,但能上热门的只有那么几个,经过近一周的分析,结合了我赢上短视频运营创作技巧,得到了以下几个经典技巧合集:学会一个就值了。 首先说一下:什么样的…

团簇生长过程-Ovito渲染

文章目录一、选择出团簇原子和非团簇原子1. 选择团簇原子2. 删除非团簇原子二、选择出团簇原子和非团簇原子1. 团簇分析2. 团簇具体信息三、渲染团簇1、 对团簇进行选择2、 获得团簇渲染后的结果四、渲染结果五、 案例dump下载博文《根据近邻列表法识别团簇—冷凝成核 MatlabOv…

java06-面向对象1

一:面向对象学习内容: 1.java 类及成员:属性、方法、构造器、代码块、内部类 2.面向对象三大特征:封装、继承、多态 3.其他关键字:this、super static、final、abstact、interface 、package、import 二&#xff…

iPhone/iPad上值得推荐的5个免费PDF转Word

PDF 文件是在不同平台上传输数据的最便捷方式,可确保保持高端信息质量。处理将不同文件格式转换为 PDF 的任务通常很麻烦,尤其是在 iOS 设备上。为了解决这个问题,这里讨论了您可以轻松依赖的前 5 个iPhone PDF 转换器工具。 适用于 iPhone 和…

多传感器融合定位六-惯性导航原理及误差分析

多传感器融合定位六-惯性导航原理及误差分析1. 惯性技术简介1.1 惯性技术发展历史1.2 惯性器件1.2.1 机械陀螺(几乎没人用了)1.2.2 激光陀螺1.2.3 光纤陀螺1.2.4 MEMS陀螺(常用)1.2.5 加速度计2. 惯性器件误差分析2.1 信号误差组成2.2 Allan方差分析3. 惯性器件内参标定3.1 惯性…