前言
今天来学习一下什么是有符号整数和无符号整数之间的转换,并且和十进制数之间的转换。
主要分为两点:
1、大致了解一下什么有符号整数,和无符号整数。
2、掌握有符号和无符号整数之间的转换方法。
什么是有符号数:
有符号数是针对二进制来讲的。用最高位作为符号位,“0”代表正,“1”代表负;
有符号数的编码方式,常用的是补码,另外还有原码和反码等。
用不同二进制编码方式表示有符号数时,所得到的机器数可能不一样,但是真值是相同的。
举个例子:
1、原码
原码就是符号位加上真值的绝对值,即用第一位表示符号其余位表示值。
比如如果是8位二进制:
1的原码 = 0000 0001
-1的原码 = 1000 0001
3、反码
反码的表示方法是:
正数的反码是其本身
负数的反码是在其原码的基础上,符号位不变,其余各个位取反。
1 = (00000001)原 = (00000001)反
-1 = (10000001)原 = (11111110)反
4、补码
补码的表示方法是:
正数的补码就是其本身
负数的补码是在其原码的基础上,符号位不变,其余各位取反,最后+1。(即在反码的基础上+1)
+1 = (00000001)原 = (00000001)反 = (00000001)补
-1 = (10000001)原 = (11111110)反 = (11111111)补
什么是无符号数:
无符号数是相对于有符号数而言的,指的是整个机器字长的全部二进制位均表示数值位,相当于数的绝对值。
无符号数是针对二进制来讲的,无符号数的表数范围是非负数。
例如:
无符号数:
1111表示15。
有符号数:
1111 是-7。
无符号数和有符号数转换:
无符号数转为有符号数
1、如果无符号数的最高位为1,则将无符号数取补码,得到的数就是有符号数。
2、首先判无符号数的最高位是否为1,如果不为1,则有符号数就直接等于无符号数。如果为1,就将无符号数取补码,得到有符号数。
举个例子:
2的原码是:0000 0010 最高位是0 所以结果是 0000 0010
130的原码是:1000 0010 最高位是1 取补码为1111 1110 所以结果是 1111 1110
有符号数转为无符号数
1、有符号数转换为无符号数,看有符号数的最高位是否为1,如果不为1(即为0),则无符号数就直接等于有符号数。
2、如果有符号数的最高位为1,则将有符号数取补码,得到的数就是无符号数。
举个例子:文章来源:https://www.toymoban.com/news/detail-461054.html
2的原码是:0000 0010 最高位是0 所以结果是 0000 0010
-2的原码是:1000 0010 最高位是1 所以结果是 1111 1110
如有问题欢迎指出文章来源地址https://www.toymoban.com/news/detail-461054.html
到了这里,关于前端也学学有符号数和无符号数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!