2013-02-10 173 views
1

如果你有一个二进制数表示1010(10为10),是否说除以2将除去第一个数字(使其最终为010)是真的?从二进制数中删除第一个数字的含义?

基本上你是如何删除第一位数字的(即如果二进制数字是0或1,那么它最终会成为无)?我不想要代码或任何东西,我只是想知道像你一样分裂或乘以二。

也不要考虑任何二进制数的最左边的零。

+0

除以2将删除最低有效位,或从右向左计数的第一个数字。可以通过右移轻松实现'''' – nhahtdh 2013-02-10 07:41:16

回答

2

它的工作原理与基准十相同。没有第一个数字的401号码是1.你减去了400,不是?现在,除以十,你会把数字右移。 401向右移动的是040. 401/10 = 40.请注意,因为我们正在进行整数除法,所以丢弃了1。

因此,在二进制中,它是完全一样的,但功率为2.删除第一位不是DIVIDE两位。它减少了其位置的价值。所以101b(它是4 + 1 = 5),没有它的最大位,是001b或1个小数。这是减法:5 - 4 = 1.

除以2,将位移到右侧,就像在基数10中一样。所以101b将变为010b,这是2位小数。 5/2 == 2(我们正在删除小数部分,因为它是整数除法)

有意义吗?如果你对二进制感到困惑,只要考虑数字的位数如何以10为基数工作,而不是10的幂,则使用2的幂。

-1

删除一个数字是喜欢它改为0更改1010到0010减去1000完成:1010 - 如果“第一个数字” 1000 = 0010

+0

从1010中减去1000得到10并不总是显而易见的。你怎么知道它是1000,而不是10000或100? aaaaaa123456789的回答解决了这个问题。 – nhahtdh 2013-02-10 07:59:03

1

你的意思是“第一显著数字”,那么是什么你正在寻找的是类似于number and not (1 shl (int(log number/log 2))),其中andnot是按位运算,shl表示左移,int向下舍入(从不上移)为整数。 log只是一个对数,在任何基数(两种情况下都是相同的基数)。

如果用“第一个数字”表示第n个位置的数字(让最右边的位置为0,向左计数),那么您只需执行number and not (1 shl position)