数据的二进制表示

文章目录

基础定义

: IC 电子元件有不同种形状,但是其内部的组成单元称为一个个的引脚。只有直流电压0V 或 5V 两个状态。与 “0” 与“1”的表达不谋而合
在这里插入图片描述

字节:8 位二进制数被称为一个 字节

为什么拟定 8 位为一个字节?
因为 8 位能够涵盖基本的字符编码(英文 26 个字母大小写 + 基本符号位等)

实例:

 一个英文字母-----占一字节

一个中文字-------占二个字节

一个整数---------占二个字节

一个实数---------占四个字节

图:
在这里插入图片描述

二进制

位权:进制数值中某个位的权重值
例如:
十进制数 39 的各个数位的数值,并不只是简单的 3 和 9
3 表示的是3×10 = 30,9 表示的是 9×1 = 9
这里和各个数位的数值相乘的 10 和 1,就是位权

基数:数值的表现方法,进位计数制中各数位上可能有的数值的个数。十进制数的基数是 10,二进制数的基数是 2

二进制转十进制的理解
核心:基数 x 位权

十进制数:
如 39 这个十进制数,表示的就是 30+9

二进制数:
00100111 用十进制数表示的话是 39,因为(0×128)+(0×64)+(1×32)+(0×16) +(0×8)+(1×4)+(1×2)+(1×1)= 39

补数:将二进制数的值取反后加 1 的结果

为什么使用补数后就能正确地表示负数了呢?
实际上是验证:补数与原来的数相加是否为 0
“将二进制数的值取反后加 1 的结果,和原来的值相加,结果为 0”这一法则
例子:
00000001+11111111
图:
在这里插入图片描述

减法运算
计算机在做减法运算时,实际上内部是在做加法运算。

进位法则: 对各个进制的数都满足,满基数,向(当前位权+1)进1
备注:楼主表示纠结这个概念了半天| :( |

符号位
二进制数中表示负数值时,一般会把最高位作为符号来使用,因此我们把这个最高位称为符号位。符号位是 0 时表示正数 ,符号位是1 时表示负数。
错误事例
“1 的二进制数是 00000001,因此-1 就是 10000001”
正确事例
“1 的二进制数是 00000001,因此-1 就是 11111111”

符号位的应用
有的可以处理负数,有的则不能处理。例如,C 语言的数据类型中,既有不能处理负数的 unsigned short 类型,也有能处理负数的 short 类型。这两种类型,都是 2 字节(= 16 位)的变量,都能表示 2 的 16 次幂 = 65536 种值,这一点是相同的。
不过,值的范围有所不同,short 类型是- 32768~32767,unsigned short 类型是 0~65535。此外,short 类型和 unsigned short 类型的另一个 不 同 点 在于,short 类 型 是 将 最 高 位 为 1 的 数 值 看 作 补 数, 而unsigned short 类型则是 32768 以上的值。

为什么总说最高位为 1 时是负数,为 0 时是正数?那么十进制的255用二进制表示就是1111-1111,可是二进制最高位是1的时候是负数,这个应该怎么理解?

整数分为“有符号整数”和“无符号整数”,以8位的二进制而言:
如果按无符号整数来用,那么最小值0(二进制0000-0000),最大值是255(1111-1111),总数是256个
而如果作为有符号整数来用,则最小值为-128(二进制1000-0000),最大值为127(0111-1111),总数也还是256个
题目中的 " 1111-1111 " 在 “有符号整数”中就不能够表示为 255 了,所以在依据最高位来判断正负数时,应该视具体情况而定

逻辑右移与算数右移的区别
算数右移有移位后在最高位补 0 和补 1 两种情况(视数值为正数或者负数)
当二进制数的值表示图形模式而非数值时,移位后需要在最高位补 0。类似于霓虹灯往右滚动的效果。这就称为 逻辑右移
图:
在这里插入图片描述
符号扩充
符号扩充就是指在保持值不变的前提下将其转换成 16 位和 32 位的二进制数
不管是正数还是用补数表示的负数,都只需用符号位的值(0 或者 1)填充高位即可
图:
在这里插入图片描述
逻辑运算
包括逻辑非(NOT 运算)、逻辑与(AND 运 算)、逻辑或(OR 运算)和逻辑异或(XOR 运算 A)四种

逻辑异或 指的是排斥相同数值的运算。“两个数值不同”
图:
在这里插入图片描述

发布了239 篇原创文章 · 获赞 78 · 访问量 16万+

猜你喜欢

转载自blog.csdn.net/weixin_39966065/article/details/104185092