汇编语言(2)---数在计算机中的表达

本文深入探讨了计算机中整数和浮点数的表示方法,包括数制转换、机器字长的概念、整数的无符号和带符号表示、溢出处理、以及IEEE浮点数标准。同时,文章讲解了数的机器表示对运算的影响,如加法、乘法和除法的电路实现,并讨论了逻辑移位和算术移位的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

整数在计算机的表达和运算

数制
在这里插入图片描述x86 1 Word = 2Byte=16 bits MIPS 1 Word = 4 Byte = 32 bits
数制之间的转换
在这里插入图片描述
逻辑运算
在这里插入图片描述数的机器表示(初步)
机器字长(machine word):
一般指计算机进行一次整数运算算处理的二进制数据的位数

  • 通常也包括数据地址的长度

32位字长

  • 地址的表示空间是4GB
  • 对很多内存需求量大的应用而言,非常有限

64位字长

  • 地址的表示空间约1.8* 1 0 19 10^{19} 1019bytes
  • 目前的x86-64机型实际支持48位宽的地址:256TB

机器字在内存中的组织
地址按照字节(byte)来定位
机器字中第一个字节的地址
相邻机器字的地址相差4(32-bit)或者8(64-bit)

一个机器字内的各个字节如何排列?
大端/小端(big endian/little endian)
big endian:PowerPC Internet
little endian:x86 ARM
在这里插入图片描述
(和性能无关,只是排列问题)
整数表示
在这里插入图片描述int是一样的, long是不一样的 指针不一样

计算机表示整数
w 表示机器字长
无符号数和带符号数
int 无符号 w=32时,
正常原码表示

unsigned int 带符号 补码表示
有正负 和零
例如short
最高位表示符号位 表示 − 2 16 -2^{16} 216
在这里插入图片描述按位取反+1
原码 0011 0000 0011 1001
反码 1100 1111 1100 0110
+1
补码 1100 1111 1100 0111

无符号取值范围
0 ~ 2 w 2^w 2w-1

有符号数范围

TMin = - 2 w − 1 2^{w-1} 2w1
1000…000
TMax = 2 w − 1 2^{w-1} 2w1-1
0111…111
Other values
-1 = 111111…1111

(重点)无符号数与带符号数之间的转换,二进制串的表示是不变的。
(计算机硬件看不到带不带符号,C语言层面有没有符号是有区别的,这个区别谁来做???)

在这里插入图片描述常数(constants)

  • 默认是带符号数
    如果有“U”作为后缀则是无符号数,如0U, 4292432423U
    如果无符号数与带符号数混合使用,则带符号数默认转换为无符号数
    在这里插入图片描述注意:-1 与0U
    -1 表示为1111111111
    0表示为000000000

何时采用无符号数?

  • 模运算
  • 按位运算

在这里插入图片描述sizeof 返回 unsigned int
都转unsigned 永远 >= 0

尽量使用有符号数

如果加法有进位,进位被踢掉。可能产生溢出。结果模 2 w 2^w 2w
C语言不检测溢出。写程序注意。

补码加法
和之前一样,汇编只有add
在这里插入图片描述
溢出情况
两个正数相加 之后是负数
两个负数相加 之后是正数
(溢出不检测)
电路层面除法
整数 加减乘简单,除法难
尽量避免除法
逻辑右移k位 除以 2 k 2^k 2k
C整数除法,小数点后一刀切 没有四舍五入
无符号整数 移出去就移出去了

逻辑右移补0 算数右移补符号位(0或1)

带符号数 右移有问题
在这里插入图片描述往小舍入 参考上图第二例。
加入一个矫正 +一个 2 k 2^k 2k-1

浮点数的机器表示

IEEE浮点数 IEEE754
IEEE Floating Point
整数小数点放最右侧,小数把小数点放中间
在这里插入图片描述浮动的点,小数点。
定点表示实数???(回去想)
在这里插入图片描述在这里插入图片描述s是符号位,和整数不同,这个是真的符号位,0表示正数,1表示0
在这里插入图片描述

浮点数的类型
  • 规格化浮点数(Normalized)
    除了s之外,另外两个域做了转换
    在这里插入图片描述(记住)
    float 127
    double 1023
    min 00000000 1.0
    max 11111111 2.0-e
    在这里插入图片描述
  • 非规格化浮点数(Denormalized)
    在这里插入图片描述 - 一些特殊值
    在这里插入图片描述
浮点数表示的特性

各种浮点数类型在数轴上的相对位置
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述不看符号位,和整型比较大小是一样。
在这里插入图片描述

Rounding (舍入)

给定一个实数,如果给出其浮点数表示?
在这里插入图片描述在这里插入图片描述保证最低有效数位是偶数(计算机内部默认)
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

C语言中的浮点数

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值