计算机二进制的表示

无符号数:

对于无符号数,二进制表示容易理解,它的表示范围:

比如一个 4位的无符号数字,它表示的范围从0——2^4-1,即 从0——15,共16个数字;

二进制表示 十进制表示
0000 0
0001 1
1111 15

当无符号数进行右移时,都是进行逻辑右移,即左边空位为0补齐,比如1101右移两位变为0011;

 

有符号数

对于有符号数,用补码表示,其实是把负数用补码表示。。什么是补码呢??比如说吧,对于一个钟表来说,它能表示的范围为12,我们反向转2个格时,也可以用正向转10个格表示。所以啊,-2 对应的补码就是10;   对于4位的表示的二进数,它能表示为从-8到7共16个数字,如下所示:

二进制 十进制 二进制 十进制
0000 0 1000 -8
0001 1 1001 -7
0010 2 1010 -6
0011 3 1011 -5
0100 4 1100 -4
0101 5 1101 -3
0110 6 1110 -2
0111 7 1111 -1

 

对有符号数进行右移时,基本都是进行算术右移,即补符号位。 对于正数来说,它的符号符号位为0,所以算术右移时,左边空出位补 0; 对于 负数来说,它的符号位为1,所以算术右移时,左边空出位补1。

用算术右移代替除数

对于正整数来说,在计算机中的当除不尽时,会直接抛弃小数位,只保留整数位。所以呢,对于正数来说,整数除法的结果总是小于或等于实际结果。  对于负数来说,整数除法的结果总是大于或等于实际结果。比如: 3 /2 = 1 ,  -3 /2 = -1;

当我们作算术右移来代替除法时,对于正整数来说,结果没有问题,比如:

 

对于负整数来说,结果会经常比应该得到的结果大1。比如:

 

解决办法为:

原文链接: https://www.cnblogs.com/yinheyi/p/8508412.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍;

也有高质量的技术群,里面有嵌入式、搜广推等BAT大佬

    计算机二进制的表示

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/395009

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年4月4日 上午9:42
下一篇 2023年4月4日 上午9:42

相关推荐