pascal里的or和shl怎么用

来源:百度知道 编辑:UC知道 时间:2024/09/22 01:17:51
pascal里的or和shl怎么用?

【or即a or b
当a、b为整形时,a or b为
将a、b转为2进制,然后从末尾逐位比较,高位不足补0(1 or 0=1; 1 or 1=1 0 or 0=0)然后转为10进制;
当a、b为boolean类型时
true or false=true
true or true=true
false or false =false】
【shl指
a shl n
将a转为2进制数,
然后将a末尾划去n位,(有点像delete(a,length(a)-n,n))
然后将转换好的a转换为是进制数
shr则是在后面补n个0
就是这样了
没有功劳也有苦劳吧,给我最佳吧~~~

or是只要1个是正确的就是正确的,如1 or 0=1; 1 or 1=1 0 or 0=0;(0 为false,1为true)
shl是位运算的一个函数,shl n表示在二进制下向左移n位。
具体见http://baike.baidu.com/view/379209.htm

=== or运算 ===
or运算通常用于二进制特定位上的无条件赋值,例如一个数or 1的结果就是把二进制最末位强行变成1。如果需要把二进制最末位变成0,对这个数or 1之后再减一就可以了,其实际意义就是把这个数强行变成最接近的偶数。
=== shl运算 ===
a shl b就表示把a转为二进制后左移b位(在后面添b个0)。例如100的二进制为1100100,而110010000转成十进制是400,那么100 shl 2 = 400。可以看出,a shl b的值实际上就是a乘以2的b次方,因为在二进制数后添一个0就相当于该数乘以2。
通常认为a shl 1比a * 2更快,因为前者是更底层一些的操作。因此程序中乘以2的操作请尽量用左移一位来代替。
定义一些常量可能会用到sh